;;; ROM offsets 03c010 - 04000f

c000: 4c 12 c0     JMP $c012   ; GAME START!
c003: 4c 36 de     JMP $de36   ; Output string at p[$3e] in bank $57 to ($3a,$3b)
c006: 4c 63 e0     JMP $e063   ; Draw $3c by $3d window at ($38,$39), slowly if $37, and ($3a,$3b)=($38,$39)+(1,2)
c009: 4c 89 c6     JMP $c689   ; Start music or play current notes
c00c: 4c c2 d7     JMP $d7c2   ; Get button presses in $20-$25
c00f: 4c 50 d8     JMP $d850   ; Upload palettes: BG at $03c0, sprite at $03d0

; GAME START!
c012: a9 00        LDA #$00
c014: 8d 00 20     STA $2000   ; set normal PPU settings
c017: 8d 01 20     STA $2001   ; disable sprite & BG
c01a: 85 fe        STA $fe
c01c: a9 08        LDA #$08    ; Copied to $2000: sprites at $1000, BG at $0000, no name table mirroring, etc
c01e: 85 ff        STA $ff
c020: 85 fd        STA $fd
c022: a2 ff        LDX #$ff    ; Reset stack pointer
c024: 9a           TXS
c025: a9 00        LDA #$00
c027: 20 69 c4     JSR $c469   ; Turn off all sound?
c02a: a9 00        LDA #$00
c02c: 20 03 fe     JSR $fe03   ; Show Bank in A in memory locations $8000-$bfff 
c02f: a2 00        LDX #$00    ;; Copy initial information into SRAM
c031: bd 00 b0     LDA $b000,X ; starting stats
c034: 9d 00 60     STA $6000,X
c037: a9 00        LDA #$00    ; zero warrior data
c039: 9d 00 61     STA $6100,X
c03c: bd 00 af     LDA $af00,X ; starting sprite visibilities and events
c03f: 9d 00 62     STA $6200,X
c042: a9 00        LDA #$00    ; zero warrior magic data
c044: 9d 00 63     STA $6300,X
c047: e8           INX
c048: d0 e7        BNE +$e7  [$c031]
c04a: a9 28        LDA #$28
c04c: 8d 16 61     STA $6116   ; initial exp = 40
c04f: 8d 56 61     STA $6156
c052: 8d 96 61     STA $6196
c055: 8d d6 61     STA $61d6
c058: a9 01        LDA #$01    ; ???
c05a: 8d 14 60     STA $6014
c05d: a5 f9        LDA $f9     ; detect hard/soft reset?
c05f: c9 4d        CMP #$4d
c061: f0 0c        BEQ +$0c  [$c06f]
c063: a9 4d        LDA #$4d    ;; hard reset: DO INTRO TEXT!
c065: 85 f9        STA $f9
c067: a9 0e        LDA #$0e
c069: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
c06c: 20 ee a0     JSR $a0ee  ; DO INTRO TEXT!
c06f: a9 0e        LDA #$0e
c071: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
c074: 20 56 a1     JSR $a156  ; NEW GAME/CONTINUE menu
c077: b0 33        BCS +$33  [$c0ac]
c079: ad fe 64     LDA $64fe  ;; continue!
c07c: c9 55        CMP #$55   ; SRAM corruption check?
c07e: d0 2c        BNE +$2c  [$c0ac]
c080: ad ff 64     LDA $64ff
c083: c9 aa        CMP #$aa
c085: d0 25        BNE +$25  [$c0ac]
c087: 20 88 c8     JSR $c888  ; Check SRAM checksum
c08a: b0 20        BCS +$20  [$c0ac]
c08c: a2 00        LDX #$00   ; SRAM ok, copy to working (S)RAM
c08e: bd 00 64     LDA $6400,X
c091: 9d 00 60     STA $6000,X
c094: bd 00 65     LDA $6500,X
c097: 9d 00 61     STA $6100,X
c09a: bd 00 66     LDA $6600,X
c09d: 9d 00 62     STA $6200,X
c0a0: bd 00 67     LDA $6700,X
c0a3: 9d 00 63     STA $6300,X
c0a6: e8           INX
c0a7: d0 e5        BNE +$e5  [$c08e]
c0a9: 4c b7 c0     JMP $c0b7
c0ac: a9 0e        LDA #$0e   ;; NEW GAME
c0ae: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
c0b1: 20 54 9c     JSR $9c54  ; Do class selection screen
c0b4: 20 6d c7     JSR $c76d  ; Copy initial stats for each warrior
c0b7: 20 54 c4     JSR $c454  ; Initialize bank 0
c0ba: ad 10 60     LDA $6010  ; Load position and mode of transport
c0bd: 85 27        STA $27
c0bf: ad 11 60     LDA $6011
c0c2: 85 28        STA $28
c0c4: ad 14 60     LDA $6014
c0c7: 85 46        STA $46
c0c9: 85 42        STA $42
c0cb: 20 fd c6     JSR $c6fd
c0ce: 20 dc d6     JSR $d6dc   ; Do open animation
c0d1: a2 ff        LDX #$ff    ; reset stack
c0d3: 9a           TXS
c0d4: 20 96 c6     JSR $c696   ; world map: $53=current tile, $52=tile data high 2 bits
c0d7: 20 00 fe     JSR $fe00   ;; MAIN LOOP(?) ; wait for V-blank
c0da: a9 02        LDA #$02    ; Upload sprites
c0dc: 8d 14 40     STA $4014
c0df: 20 35 c3     JSR $c335
c0e2: a5 f0        LDA $f0
c0e4: 18           CLC
c0e5: 69 01        ADC #$01
c0e7: 85 f0        STA $f0
c0e9: a5 f1        LDA $f1
c0eb: 69 00        ADC #$00
c0ed: 85 f1        STA $f1
c0ef: 20 81 c6     JSR $c681   ; Start music or play current notes, bank=13
c0f2: a5 32        LDA $32
c0f4: c9 01        CMP #$01
c0f6: d0 03        BNE +$03  [$c0fb]
c0f8: 20 01 d4     JSR $d401   ; Something to do with updating the palette map
c0fb: a5 34        LDA $34
c0fd: d0 0a        BNE +$0a  [$c109]
c0ff: a5 46        LDA $46
c101: 85 42        STA $42
c103: 20 40 c1     JSR $c140
c106: 20 3c c2     JSR $c23c
c109: 20 3c c4     JSR $c43c   ; Clear sprites
c10c: 20 25 e2     JSR $e225   ; Draw player world map sprite
c10f: a5 42        LDA $42
c111: 29 0c        AND #$0c
c113: f0 c2        BEQ +$c2  [$c0d7]
c115: c9 08        CMP #$08
c117: d0 0b        BNE +$0b  [$c124]
c119: a9 38        LDA #$38
c11b: 8d 0c 40     STA $400c
c11e: a5 f0        LDA $f0
c120: 0a           ASL
c121: 4c 35 c1     JMP $c135
c124: a5 f0        LDA $f0
c126: 10 02        BPL +$02  [$c12a]
c128: 49 ff        EOR #$ff
c12a: 4a           LSR
c12b: 4a           LSR
c12c: 4a           LSR
c12d: 4a           LSR
c12e: 09 30        ORA #$30
c130: 8d 0c 40     STA $400c
c133: a9 0a        LDA #$0a
c135: 8d 0e 40     STA $400e
c138: a9 00        LDA #$00
c13a: 8d 0f 40     STA $400f
c13d: 4c d7 c0     JMP $c0d7

c140: ad 16 60     LDA $6016
c143: f0 1a        BEQ +$1a  [$c15f]
c145: 30 18        BMI +$18  [$c15f]
c147: a9 00        LDA #$00
c149: 20 46 d9     JSR $d946   ; Do palette cycle: A.1 selects palette (reg/room), A.0 selects direction (to/from black)
c14c: 20 cb e8     JSR $e8cb  ; Load prologue/ship game background
c14f: a9 0d        LDA #$0d
c151: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
c154: 20 00 b8     JSR $b800
c157: a9 04        LDA #$04
c159: 20 46 d9     JSR $d946   ; Do palette cycle: A.1 selects palette (reg/room), A.0 selects direction (to/from black)
c15c: 4c 62 c7     JMP $c762
c15f: a5 50        LDA $50
c161: f0 13        BEQ +$13  [$c176]
c163: 20 96 c6     JSR $c696   ; world map: $53=current tile, $52=tile data high 2 bits
c166: a9 00        LDA #$00
c168: 20 46 d9     JSR $d946   ; Do palette cycle: A.1 selects palette (reg/room), A.0 selects direction (to/from black)
c16b: a9 0e        LDA #$0e
c16d: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
c170: 20 30 a3     JSR $a330
c173: 4c 62 c7     JMP $c762
c176: 24 45        BIT $45
c178: 30 62        BMI +$62  [$c1dc]  ; Enter map from world map
c17a: 70 47        BVS +$47  [$c1c3]
c17c: a5 23        LDA $23
c17e: f0 1a        BEQ +$1a  [$c19a]
c180: a9 00        LDA #$00
c182: 85 23        STA $23
c184: 8d 0c 40     STA $400c
c187: 20 96 c6     JSR $c696   ; world map: $53=current tile, $52=tile data high 2 bits
c18a: a9 00        LDA #$00
c18c: 20 46 d9     JSR $d946   ; Do palette cycle: A.1 selects palette (reg/room), A.0 selects direction (to/from black)
c18f: a9 0e        LDA #$0e
c191: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
c194: 20 b3 ad     JSR $adb3
c197: 4c 62 c7     JMP $c762
c19a: a5 22        LDA $22
c19c: f0 24        BEQ +$24  [$c1c2]
c19e: a9 00        LDA #$00
c1a0: 8d 0c 40     STA $400c
c1a3: 20 46 d9     JSR $d946   ; Do palette cycle: A.1 selects palette (reg/room), A.0 selects direction (to/from black)
c1a6: a5 20        LDA $20
c1a8: 29 40        AND #$40
c1aa: f0 0b        BEQ +$0b  [$c1b7]
c1ac: a9 09        LDA #$09
c1ae: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
c1b1: 20 00 bc     JSR $bc00  ; Do the B+Select Map
c1b4: 4c 62 c7     JMP $c762
c1b7: a9 0e        LDA #$0e
c1b9: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
c1bc: 20 15 99     JSR $9915
c1bf: 4c 62 c7     JMP $c762
c1c2: 60           RTS

c1c3: 20 96 c6     JSR $c696   ; world map: $53=current tile, $52=tile data high 2 bits
c1c6: 20 cd d8     JSR $d8cd  ; Do battle entry flashing, then BG off and clear sprites
c1c9: a9 00        LDA #$00
c1cb: 8d 01 20     STA $2001
c1ce: 8d 15 40     STA $4015
c1d1: 20 00 e9     JSR $e900  ; Load battle $6a with BG $53
c1d4: a5 6a        LDA $6a
c1d6: 20 00 f2     JSR $f200  ; Load battle data ($6a) and start battle
c1d9: 4c 62 c7     JMP $c762

; Enter map from world map
c1dc: 20 96 c6     JSR $c696   ; world map: $53=current tile, $52=tile data high 2 bits
c1df: 20 01 d7     JSR $d701   ; Do close animation
c1e2: a9 00        LDA #$00
c1e4: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
c1e7: a5 45        LDA $45
c1e9: 29 3f        AND #$3f   ; load X
c1eb: aa           TAX
c1ec: bd 00 ac     LDA $ac00,X
c1ef: 38           SEC
c1f0: e9 07        SBC #$07
c1f2: 29 3f        AND #$3f
c1f4: 85 29        STA $29
c1f6: bd 20 ac     LDA $ac20,X  ; Load Y
c1f9: 38           SEC
c1fa: e9 07        SBC #$07
c1fc: 29 3f        AND #$3f
c1fe: 85 2a        STA $2a
c200: bd 40 ac     LDA $ac40,X  ; Load map
c203: 85 48        STA $48
c205: aa           TAX          ; Load map tileset
c206: bd c0 ac     LDA $acc0,X
c209: 85 49        STA $49
c20b: a9 00        LDA #$00
c20d: 85 0d        STA $0d
c20f: 20 b3 c8     JSR $c8b3   ; Load map and do the main map loop
c212: 4c cb c0     JMP $c0cb    ; back to main loop

; Try to board airship
c215: ad 04 60     LDA $6004
c218: f0 21        BEQ +$21  [$c23b]
c21a: a5 27        LDA $27
c21c: 18           CLC
c21d: 69 07        ADC #$07
c21f: cd 05 60     CMP $6005
c222: d0 17        BNE +$17  [$c23b]
c224: a5 28        LDA $28
c226: 18           CLC
c227: 69 07        ADC #$07
c229: cd 06 60     CMP $6006
c22c: d0 0d        BNE +$0d  [$c23b]
c22e: a9 08        LDA #$08
c230: 85 46        STA $46
c232: 85 42        STA $42
c234: a9 46        LDA #$46
c236: 85 4b        STA $4b
c238: 4c a8 e1     JMP $e1a8   ; Airship rise animation?
c23b: 60           RTS

c23c: a5 44        LDA $44
c23e: 29 10        AND #$10
c240: 85 43        STA $43
c242: a5 47        LDA $47
c244: f0 06        BEQ +$06  [$c24c]
c246: 38           SEC
c247: e9 01        SBC #$01
c249: 85 47        STA $47
c24b: 60           RTS
c24c: 20 c2 d7     JSR $d7c2   ; Get button presses in $20-$25
c24f: a5 20        LDA $20
c251: 29 0f        AND #$0f
c253: d0 46        BNE +$46  [$c29b]
c255: a5 24        LDA $24
c257: f0 0e        BEQ +$0e  [$c267]
c259: a9 00        LDA #$00    ;; A button pressed
c25b: 85 24        STA $24
c25d: a5 42        LDA $42
c25f: c9 08        CMP #$08
c261: f0 71        BEQ +$71  [$c2d4]  ; Try to land airship
c263: c9 01        CMP #$01
c265: f0 ae        BEQ +$ae  [$c215]  ; Try to board airship
c267: a5 25        LDA $25
c269: c9 37        CMP #$37           ;; on ship and B pressed 55 times and A also pressed?
c26b: d0 2d        BNE +$2d  [$c29a]
c26d: e6 25        INC $25
c26f: a5 42        LDA $42
c271: c9 04        CMP #$04
c273: d0 25        BNE +$25  [$c29a]
c275: a5 20        LDA $20
c277: 29 c0        AND #$c0
c279: c9 c0        CMP #$c0
c27b: d0 1d        BNE +$1d  [$c29a]
c27d: a9 00        LDA #$00
c27f: 20 46 d9     JSR $d946   ; Do palette cycle: A.1 selects palette (reg/room), A.0 selects direction (to/from black)
c282: 20 cb e8     JSR $e8cb  ; Load prologue/ship game background
c285: a9 0d        LDA #$0d
c287: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
c28a: 20 10 ae     JSR $ae10  ; SHIP GAME!
c28d: 90 03        BCC +$03  [$c292]
c28f: 20 a4 c8     JSR $c8a4  ; won: Add 100 gold
c292: a9 04        LDA #$04
c294: 20 46 d9     JSR $d946   ; Do palette cycle: A.1 selects palette (reg/room), A.0 selects direction (to/from black)
c297: 4c 62 c7     JMP $c762
c29a: 60           RTS
c29b: a6 42        LDX $42
c29d: e0 08        CPX #$08
c29f: f0 2a        BEQ +$2a  [$c2cb]
c2a1: e0 04        CPX #$04
c2a3: f0 32        BEQ +$32  [$c2d7]
c2a5: e0 02        CPX #$02
c2a7: f0 55        BEQ +$55  [$c2fe]
c2a9: 20 7d c4     JSR $c47d
c2ac: 90 1d        BCC +$1d  [$c2cb]
c2ae: a9 00        LDA #$00
c2b0: 85 45        STA $45
c2b2: 20 4d c6     JSR $c64d   ; Stepping on bridge or canal plug?
c2b5: b0 0a        BCS +$0a  [$c2c1]
c2b7: ad 16 60     LDA $6016
c2ba: d0 0f        BNE +$0f  [$c2cb]
c2bc: ee 16 60     INC $6016
c2bf: d0 0a        BNE +$0a  [$c2cb]
c2c1: 20 e6 c5     JSR $c5e6   ; Can canoe?
c2c4: 90 05        BCC +$05  [$c2cb]
c2c6: 20 09 c6     JSR $c609   ; Can board ship?
c2c9: b0 2c        BCS +$2c  [$c2f7]
c2cb: a5 20        LDA $20
c2cd: 29 0f        AND #$0f
c2cf: 85 33        STA $33
c2d1: 4c 23 d0     JMP $d023

c2d4: 4c b8 c6     JMP $c6b8  ; try to land airship

c2d7: 20 7d c4     JSR $c47d
c2da: b0 08        BCS +$08  [$c2e4]
c2dc: 20 66 c6     JSR $c666
c2df: b0 ea        BCS +$ea  [$c2cb]
c2e1: 4c f7 c2     JMP $c2f7
c2e4: 20 e6 c5     JSR $c5e6   ; Can canoe?
c2e7: 90 e2        BCC +$e2  [$c2cb]
c2e9: a5 44        LDA $44
c2eb: 29 21        AND #$21
c2ed: c9 20        CMP #$20
c2ef: d0 06        BNE +$06  [$c2f7]
c2f1: 20 d2 c5     JSR $c5d2   ; Set to walking
c2f4: 4c cb c2     JMP $c2cb
c2f7: a9 00        LDA #$00
c2f9: 85 44        STA $44
c2fb: 85 45        STA $45
c2fd: 60           RTS

c2fe: 20 7d c4     JSR $c47d
c301: 90 c8        BCC +$c8  [$c2cb]
c303: 20 cc c5     JSR $c5cc   ; Exit canoe to land? C clear if so
c306: 90 c3        BCC +$c3  [$c2cb]
c308: 20 09 c6     JSR $c609   ; Can board ship?
c30b: 90 be        BCC +$be  [$c2cb]
c30d: b0 e8        BCS +$e8  [$c2f7]

; Copy world map tiles, palettes, and such
c30f: a9 00        LDA #$00
c311: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
c314: a9 00        LDA #$00   ; Copy world map tile data, pattern data, palette assignments, and palettes
c316: 85 10        STA $10
c318: 85 12        STA $12
c31a: a9 80        LDA #$80
c31c: 85 11        STA $11
c31e: a9 04        LDA #$04
c320: 85 13        STA $13
c322: a2 04        LDX #$04
c324: a0 00        LDY #$00
c326: b1 10        LDA ($10),Y
c328: 91 12        STA ($12),Y
c32a: c8           INY
c32b: d0 f9        BNE +$f9  [$c326]
c32d: e6 11        INC $11
c32f: e6 13        INC $13
c331: ca           DEX
c332: d0 f2        BNE +$f2  [$c326]
c334: 60           RTS

c335: a5 34        LDA $34
c337: f0 0d        BEQ +$0d  [$c346]
c339: 20 c4 c3     JSR $c3c4
c33c: a5 42        LDA $42
c33e: c9 01        CMP #$01
c340: d0 03        BNE +$03  [$c345]
c342: 4c fb c7     JMP $c7fb   ; Do poison step damage
c345: 60           RTS

c346: a9 1e        LDA #$1e
c348: 8d 01 20     STA $2001

; Set scrolling for world map?
c34b: a5 fd        LDA $fd
c34d: 85 ff        STA $ff
c34f: 8d 00 20     STA $2000
c352: ad 02 20     LDA $2002
c355: a5 27        LDA $27
c357: 0a           ASL
c358: 0a           ASL
c359: 0a           ASL
c35a: 0a           ASL
c35b: 05 35        ORA $35
c35d: 8d 05 20     STA $2005
c360: a5 2f        LDA $2f
c362: 0a           ASL
c363: 0a           ASL
c364: 0a           ASL
c365: 0a           ASL
c366: 05 36        ORA $36
c368: 8d 05 20     STA $2005
c36b: 60           RTS

c36c: a5 32        LDA $32
c36e: f0 03        BEQ +$03  [$c373]
c370: 20 e9 d0     JSR $d0e9
c373: 20 46 c3     JSR $c346   ; Enable display and set scrolling for world map?
c376: a5 35        LDA $35
c378: 18           CLC
c379: 65 34        ADC $34
c37b: 29 0f        AND #$0f
c37d: f0 03        BEQ +$03  [$c382]
c37f: 85 35        STA $35
c381: 60           RTS
c382: 85 34        STA $34
c384: 85 35        STA $35
c386: a5 27        LDA $27
c388: 18           CLC
c389: 69 01        ADC #$01
c38b: 85 27        STA $27
c38d: 29 10        AND #$10
c38f: 46 fd        LSR $fd
c391: c9 10        CMP #$10
c393: 26 fd        ROL $fd
c395: 60           RTS
c396: a5 32        LDA $32
c398: f0 03        BEQ +$03  [$c39d]
c39a: 20 e9 d0     JSR $d0e9
c39d: 20 46 c3     JSR $c346   ; Enable display and set scrolling for world map?
c3a0: a5 35        LDA $35
c3a2: d0 11        BNE +$11  [$c3b5]
c3a4: a5 27        LDA $27
c3a6: 38           SEC
c3a7: e9 01        SBC #$01
c3a9: 85 27        STA $27
c3ab: 29 10        AND #$10
c3ad: 46 fd        LSR $fd
c3af: c9 10        CMP #$10
c3b1: 26 fd        ROL $fd
c3b3: a5 35        LDA $35
c3b5: 38           SEC
c3b6: e5 34        SBC $34
c3b8: 29 0f        AND #$0f
c3ba: f0 03        BEQ +$03  [$c3bf]
c3bc: 85 35        STA $35
c3be: 60           RTS
c3bf: 85 34        STA $34
c3c1: 85 35        STA $35
c3c3: 60           RTS

c3c4: a5 33        LDA $33
c3c6: 4a           LSR
c3c7: b0 a3        BCS +$a3  [$c36c]
c3c9: 4a           LSR
c3ca: b0 ca        BCS +$ca  [$c396]
c3cc: 4a           LSR
c3cd: b0 03        BCS +$03  [$c3d2]
c3cf: 4c 06 c4     JMP $c406
c3d2: a5 32        LDA $32
c3d4: f0 0d        BEQ +$0d  [$c3e3]
c3d6: c9 01        CMP #$01
c3d8: f0 06        BEQ +$06  [$c3e0]
c3da: a5 36        LDA $36
c3dc: c9 08        CMP #$08
c3de: d0 03        BNE +$03  [$c3e3]
c3e0: 20 e9 d0     JSR $d0e9
c3e3: 20 46 c3     JSR $c346   ; Enable display and set scrolling for world map?
c3e6: a5 36        LDA $36
c3e8: 18           CLC
c3e9: 65 34        ADC $34
c3eb: 29 0f        AND #$0f
c3ed: f0 03        BEQ +$03  [$c3f2]
c3ef: 85 36        STA $36
c3f1: 60           RTS
c3f2: 85 34        STA $34
c3f4: 85 36        STA $36
c3f6: e6 28        INC $28
c3f8: a5 2f        LDA $2f
c3fa: 18           CLC
c3fb: 69 01        ADC #$01
c3fd: c9 0f        CMP #$0f
c3ff: 90 02        BCC +$02  [$c403]
c401: e9 0f        SBC #$0f
c403: 85 2f        STA $2f
c405: 60           RTS
c406: a5 32        LDA $32
c408: f0 0d        BEQ +$0d  [$c417]
c40a: c9 01        CMP #$01
c40c: f0 06        BEQ +$06  [$c414]
c40e: a5 36        LDA $36
c410: c9 08        CMP #$08
c412: d0 03        BNE +$03  [$c417]
c414: 20 e9 d0     JSR $d0e9
c417: 20 46 c3     JSR $c346   ; Enable display and set scrolling for world map?
c41a: a5 36        LDA $36
c41c: d0 0f        BNE +$0f  [$c42d]
c41e: c6 28        DEC $28
c420: a5 2f        LDA $2f
c422: 38           SEC
c423: e9 01        SBC #$01
c425: b0 02        BCS +$02  [$c429]
c427: 69 0f        ADC #$0f
c429: 85 2f        STA $2f
c42b: a5 36        LDA $36
c42d: 38           SEC
c42e: e5 34        SBC $34
c430: 29 0f        AND #$0f
c432: f0 03        BEQ +$03  [$c437]
c434: 85 36        STA $36
c436: 60           RTS
c437: 85 34        STA $34
c439: 85 36        STA $36
c43b: 60           RTS

; $0200-02ff = 0xf8, $26=0
c43c: a2 3f        LDX #$3f
c43e: a9 f8        LDA #$f8
c440: 9d 00 02     STA $0200,X
c443: 9d 40 02     STA $0240,X
c446: 9d 80 02     STA $0280,X
c449: 9d c0 02     STA $02c0,X
c44c: ca           DEX
c44d: 10 f1        BPL +$f1  [$c440]
c44f: a9 00        LDA #$00
c451: 85 26        STA $26
c453: 60           RTS

; Initialize bank 0
c454: a2 ef        LDX #$ef
c456: a9 00        LDA #$00
c458: 95 00        STA $00,X
c45a: ca           DEX
c45b: d0 fb        BNE +$fb  [$c458]
c45d: a9 1b        LDA #$1b
c45f: 05 f4        ORA $f4
c461: 85 f4        STA $f4
c463: 60           RTS

c464: ea           NOP
c465: ea           NOP
c466: ea           NOP
c467: ea           NOP
c468: ea           NOP

; Turn off all sound?
c469: a9 30        LDA #$30
c46b: 8d 00 40     STA $4000
c46e: 8d 04 40     STA $4004
c471: 8d 08 40     STA $4008
c474: 8d 0c 40     STA $400c
c477: a9 00        LDA #$00
c479: 8d 15 40     STA $4015
c47c: 60           RTS

c47d: 4a           LSR
c47e: b0 14        BCS +$14  [$c494]
c480: 4a           LSR
c481: b0 18        BCS +$18  [$c49b]
c483: 4a           LSR
c484: b0 07        BCS +$07  [$c48d]
c486: a2 07        LDX #$07
c488: a0 06        LDY #$06
c48a: 4c 9f c4     JMP $c49f
c48d: a2 07        LDX #$07
c48f: a0 08        LDY #$08
c491: 4c 9f c4     JMP $c49f
c494: a2 08        LDX #$08
c496: a0 07        LDY #$07
c498: 4c 9f c4     JMP $c49f
c49b: a2 06        LDX #$06
c49d: a0 07        LDY #$07
c49f: 8a           TXA
c4a0: 18           CLC
c4a1: 65 27        ADC $27
c4a3: 85 10        STA $10
c4a5: 85 12        STA $12
c4a7: 98           TYA
c4a8: 18           CLC
c4a9: 65 28        ADC $28
c4ab: 85 13        STA $13
c4ad: 29 0f        AND #$0f
c4af: 09 70        ORA #$70
c4b1: 85 11        STA $11
c4b3: a0 00        LDY #$00
c4b5: b1 10        LDA ($10),Y
c4b7: 0a           ASL
c4b8: aa           TAX
c4b9: bd 00 04     LDA $0400,X
c4bc: 85 44        STA $44
c4be: bd 01 04     LDA $0401,X
c4c1: 85 45        STA $45
c4c3: a5 44        LDA $44
c4c5: 25 42        AND $42
c4c7: f0 02        BEQ +$02  [$c4cb]
c4c9: 38           SEC
c4ca: 60           RTS
c4cb: 24 45        BIT $45
c4cd: 70 2e        BVS +$2e  [$c4fd]
c4cf: a5 42        LDA $42
c4d1: c9 01        CMP #$01
c4d3: f0 02        BEQ +$02  [$c4d7]
c4d5: 18           CLC
c4d6: 60           RTS
c4d7: a5 44        LDA $44
c4d9: 29 c0        AND #$c0
c4db: f0 f8        BEQ +$f8  [$c4d5]
c4dd: c9 40        CMP #$40
c4df: f0 15        BEQ +$15  [$c4f6]
c4e1: c9 80        CMP #$80
c4e3: d0 f0        BNE +$f0  [$c4d5]
c4e5: ad 13 62     LDA $6213
c4e8: 29 01        AND #$01
c4ea: d0 08        BNE +$08  [$c4f4]
c4ec: a9 01        LDA #$01
c4ee: 85 50        STA $50
c4f0: a9 46        LDA #$46
c4f2: 85 51        STA $51
c4f4: 18           CLC
c4f5: 60           RTS
c4f6: ad 2c 60     LDA $602c
c4f9: d0 da        BNE +$da  [$c4d5]
c4fb: 38           SEC
c4fc: 60           RTS
c4fd: a9 0a        LDA #$0a
c4ff: a6 42        LDX $42
c501: e0 04        CPX #$04
c503: d0 02        BNE +$02  [$c507]
c505: a9 03        LDA #$03
c507: 85 10        STA $10
c509: 20 71 c5     JSR $c571   ; Next step random number (for battle)
c50c: c5 10        CMP $10
c50e: 90 06        BCC +$06  [$c516]
c510: a9 00        LDA #$00
c512: 85 45        STA $45
c514: 18           CLC
c515: 60           RTS
c516: a5 45        LDA $45     ; battle type for this tile
c518: 29 03        AND #$03
c51a: f0 16        BEQ +$16  [$c532]
c51c: c9 02        CMP #$02
c51e: f0 0e        BEQ +$0e  [$c52e]
c520: a5 28        LDA $28   ; river battle, domain depends on Y
c522: 18           CLC
c523: 69 07        ADC #$07
c525: 0a           ASL
c526: 2a           ROL
c527: 29 01        AND #$01
c529: 09 40        ORA #$40
c52b: 4c 4a c5     JMP $c54a
c52e: a9 42        LDA #$42  ; ocean battle
c530: d0 18        BNE +$18  [$c54a]
c532: a5 27        LDA $27   ; normal battle, find domain: ((X+7)>>5) + (((Y+7)>>5)<<3)
c534: 18           CLC
c535: 69 07        ADC #$07
c537: 2a           ROL
c538: 2a           ROL
c539: 2a           ROL
c53a: 2a           ROL
c53b: 29 07        AND #$07
c53d: 85 10        STA $10
c53f: a5 28        LDA $28
c541: 18           CLC
c542: 69 07        ADC #$07
c544: 4a           LSR
c545: 4a           LSR
c546: 29 38        AND #$38
c548: 05 10        ORA $10
c54a: a0 10        LDY #$10  ; p[$10] = battle domain data
c54c: 84 11        STY $11
c54e: 0a           ASL
c54f: 26 11        ROL $11
c551: 0a           ASL
c552: 26 11        ROL $11
c554: 0a           ASL
c555: 26 11        ROL $11
c557: 85 10        STA $10
c559: a9 0b        LDA #$0b
c55b: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
c55e: e6 f7        INC $f7    ; choose battle!
c560: a6 f7        LDX $f7
c562: bd 00 f1     LDA $f100,X
c565: 29 3f        AND #$3f
c567: aa           TAX
c568: bc 8c c5     LDY $c58c,X ; Look up battle number
c56b: b1 10        LDA ($10),Y
c56d: 85 6a        STA $6a
c56f: 18           CLC
c570: 60           RTS

; Next step random number (for battle)
c571: 24 f6        BIT $f6
c573: 30 06        BMI +$06  [$c57b]
c575: e6 f5        INC $f5
c577: d0 0d        BNE +$0d  [$c586]
c579: f0 04        BEQ +$04  [$c57f]
c57b: c6 f5        DEC $f5
c57d: d0 07        BNE +$07  [$c586]
c57f: a5 f6        LDA $f6
c581: 18           CLC
c582: 69 a0        ADC #$a0
c584: 85 f6        STA $f6
c586: a6 f5        LDX $f5
c588: bd 00 f1     LDA $f100,X
c58b: 60           RTS

; Battle probability lookup table: the game gets a random number 0-63, and
; looks in here to determine which of the 8 battles to use. Probabilities end
; up as:
;  #0 = 18.75%    #4 = 9.375%
;  #1 = 18.75%    #5 = 9.375%
;  #2 = 18.75%    #6 = 4.6875%
;  #3 = 18.75%    #7 = 1.5625%
c58c: 00 00 00 00 00 00 00 00 00 00 00 00 01 01 01 01
c59c: 01 01 01 01 01 01 01 01 02 02 02 02 02 02 02 02
c5ac: 02 02 02 02 03 03 03 03 03 03 03 03 03 03 03 03
c5bc: 04 04 04 04 04 04 05 05 05 05 05 05 06 06 06 07

; Exit canoe to land? C clear if so
c5cc: a5 44        LDA $44
c5ce: 29 01        AND #$01
c5d0: d0 12        BNE +$12  [$c5e4]

; Set to walking
c5d2: a5 42        LDA $42
c5d4: a2 01        LDX #$01
c5d6: 86 46        STX $46
c5d8: 86 42        STX $42
c5da: a2 00        LDX #$00
c5dc: 86 45        STX $45
c5de: c9 04        CMP #$04    ; ?? if on the ship
c5e0: f0 50        BEQ +$50  [$c632]
c5e2: 18           CLC
c5e3: 60           RTS
c5e4: 38           SEC
c5e5: 60           RTS

; Can canoe?
c5e6: a5 44        LDA $44
c5e8: 29 02        AND #$02
c5ea: d0 f8        BNE +$f8  [$c5e4]
c5ec: ad 12 60     LDA $6012
c5ef: f0 f3        BEQ +$f3  [$c5e4]
c5f1: a9 04        LDA #$04
c5f3: 85 47        STA $47
c5f5: a5 42        LDA $42
c5f7: a2 01        LDX #$01
c5f9: 86 42        STX $42
c5fb: a2 02        LDX #$02
c5fd: 86 46        STX $46
c5ff: a2 00        LDX #$00
c601: 86 45        STX $45
c603: c9 04        CMP #$04
c605: f0 2b        BEQ +$2b  [$c632]
c607: 18           CLC
c608: 60           RTS

; Can board ship?
c609: ad 00 60     LDA $6000
c60c: f0 d6        BEQ +$d6  [$c5e4]
c60e: ad 01 60     LDA $6001
c611: c5 12        CMP $12
c613: d0 cf        BNE +$cf  [$c5e4]
c615: ad 02 60     LDA $6002
c618: c5 13        CMP $13
c61a: d0 c8        BNE +$c8  [$c5e4]
c61c: a9 01        LDA #$01
c61e: 85 42        STA $42
c620: a9 04        LDA #$04
c622: 85 46        STA $46
c624: a9 04        LDA #$04
c626: 85 47        STA $47
c628: a9 00        LDA #$00
c62a: 85 45        STA $45
c62c: a9 45        LDA #$45
c62e: 85 4b        STA $4b
c630: 18           CLC
c631: 60           RTS

c632: a5 27        LDA $27
c634: 18           CLC
c635: 69 07        ADC #$07
c637: 8d 01 60     STA $6001
c63a: a5 28        LDA $28
c63c: 18           CLC
c63d: 69 07        ADC #$07
c63f: 8d 02 60     STA $6002
c642: 18           CLC
c643: a9 30        LDA #$30
c645: 8d 0c 40     STA $400c
c648: a9 44        LDA #$44
c64a: 85 4b        STA $4b
c64c: 60           RTS

; Stepping on bridge or canal plug?
c64d: ad 08 60     LDA $6008
c650: f0 14        BEQ +$14  [$c666]
c652: a5 12        LDA $12
c654: cd 09 60     CMP $6009
c657: d0 0d        BNE +$0d  [$c666]
c659: a5 13        LDA $13
c65b: cd 0a 60     CMP $600a
c65e: d0 06        BNE +$06  [$c666]
c660: a9 00        LDA #$00
c662: 85 45        STA $45
c664: 18           CLC
c665: 60           RTS
c666: ad 0c 60     LDA $600c
c669: f0 14        BEQ +$14  [$c67f]
c66b: a5 12        LDA $12
c66d: cd 0d 60     CMP $600d
c670: d0 0d        BNE +$0d  [$c67f]
c672: a5 13        LDA $13
c674: cd 0e 60     CMP $600e
c677: d0 06        BNE +$06  [$c67f]
c679: a9 00        LDA #$00
c67b: 85 45        STA $45
c67d: 18           CLC
c67e: 60           RTS
c67f: 38           SEC
c680: 60           RTS

; Start music or play current notes; bank is left at 13
c681: a9 0d        LDA #$0d
c683: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
c686: 4c 00 b0     JMP $b000  ; Start music or play current notes

; Start music or play current notes
c689: a9 0d        LDA #$0d
c68b: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
c68e: 20 00 b0     JSR $b000  ; Start music or play current notes
c691: a5 57        LDA $57
c693: 4c 03 fe     JMP $fe03  ; Show Bank in A in memory locations $8000-$bfff 

; world map: $53=current tile, $52=tile data high 2 bits
c696: a5 27        LDA $27
c698: 18           CLC
c699: 69 07        ADC #$07
c69b: 85 10        STA $10
c69d: a5 28        LDA $28
c69f: 18           CLC
c6a0: 69 07        ADC #$07
c6a2: 29 0f        AND #$0f
c6a4: 09 70        ORA #$70
c6a6: 85 11        STA $11
c6a8: a0 00        LDY #$00
c6aa: b1 10        LDA ($10),Y
c6ac: 85 53        STA $53
c6ae: 0a           ASL
c6af: aa           TAX
c6b0: bd 00 04     LDA $0400,X
c6b3: 29 c0        AND #$c0
c6b5: 85 52        STA $52
c6b7: 60           RTS

c6b8: a9 00        LDA #$00
c6ba: 85 24        STA $24
c6bc: 20 c2 e1     JSR $e1c2   ; airship landing animation?
c6bf: a5 27        LDA $27     ;; Check if airship can land here
c6c1: 18           CLC
c6c2: 69 07        ADC #$07
c6c4: 85 10        STA $10
c6c6: a5 28        LDA $28
c6c8: 18           CLC
c6c9: 69 07        ADC #$07
c6cb: 29 0f        AND #$0f
c6cd: 09 70        ORA #$70
c6cf: 85 11        STA $11
c6d1: a0 00        LDY #$00
c6d3: b1 10        LDA ($10),Y
c6d5: 0a           ASL
c6d6: aa           TAX
c6d7: bd 00 04     LDA $0400,X
c6da: 29 08        AND #$08
c6dc: f0 04        BEQ +$04  [$c6e2]
c6de: 20 a8 e1     JSR $e1a8   ; Airship rise animation?
c6e1: 60           RTS
c6e2: a5 27        LDA $27     ; landed, save position
c6e4: 18           CLC
c6e5: 69 07        ADC #$07
c6e7: 8d 05 60     STA $6005
c6ea: a5 28        LDA $28
c6ec: 18           CLC
c6ed: 69 07        ADC #$07
c6ef: 8d 06 60     STA $6006
c6f2: a9 01        LDA #$01    ; now walking
c6f4: 85 46        STA $46
c6f6: 85 42        STA $42
c6f8: a9 44        LDA #$44
c6fa: 85 4b        STA $4b
c6fc: 60           RTS

c6fd: a9 00        LDA #$00
c6ff: 8d 00 20     STA $2000
c702: 8d 01 20     STA $2001
c705: 8d 15 40     STA $4015
c708: 85 2f        STA $2f
c70a: 85 44        STA $44
c70c: 85 45        STA $45
c70e: 85 0d        STA $0d
c710: 85 50        STA $50
c712: 85 33        STA $33
c714: 85 24        STA $24
c716: 85 25        STA $25
c718: 85 23        STA $23
c71a: 85 22        STA $22
c71c: 85 2d        STA $2d
c71e: 20 20 e9     JSR $e920   ; Upload world map tiles and sprites
c721: 20 0f c3     JSR $c30f   ; Copy world map tiles, palettes, and such
c724: 20 ab d8     JSR $d8ab   ; Copy map palettes into position
c727: 20 e7 cf     JSR $cfe7
c72a: a5 27        LDA $27
c72c: 29 10        AND #$10
c72e: c9 10        CMP #$10
c730: 2a           ROL
c731: 29 01        AND #$01
c733: 09 08        ORA #$08
c735: 85 fd        STA $fd
c737: 85 ff        STA $ff
c739: 20 00 fe     JSR $fe00   ; wait for V-blank
c73c: 20 62 d8     JSR $d862   ; Upload palettes: BG at $03e0, sprite at $03d0
c73f: 20 46 c3     JSR $c346   ; Enable display and set scrolling for world map?
c742: a9 00        LDA #$00
c744: 8d 01 20     STA $2001
c747: a6 42        LDX $42
c749: bd 59 c7     LDA $c759,X
c74c: 85 4b        STA $4b
c74e: a9 0b        LDA #$0b
c750: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
c753: ad 00 8c     LDA $8c00
c756: 85 f8        STA $f8
c758: 60           RTS

; World-map music by method of transport?
c759: 44           .DB $44
c75a: 44           .DB $44
c75b: 44           .DB $44
c75c: 44           .DB $44
c75d: 45 45        EOR $45
c75f: 45 45        EOR $45
c761: 46           .DB $46

c762: 20 fd c6     JSR $c6fd
c765: a9 01        LDA #$01
c767: 20 46 d9     JSR $d946   ; Do palette cycle: A.1 selects palette (reg/room), A.0 selects direction (to/from black)
c768: 46 d9        LSR $d9
c76a: 4c d1 c0     JMP $c0d1

; Copy initial stats for each warrior
c76d: a9 00        LDA #$00
c76f: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
c772: a2 00        LDX #$00
c774: 20 83 c7     JSR $c783
c777: a2 40        LDX #$40
c779: 20 83 c7     JSR $c783
c77c: a2 80        LDX #$80
c77e: 20 83 c7     JSR $c783
c781: a2 c0        LDX #$c0
c783: bd 00 61     LDA $6100,X
c786: 0a           ASL
c787: 0a           ASL
c788: 0a           ASL
c789: 0a           ASL
c78a: a8           TAY
c78b: b9 41 b0     LDA $b041,Y
c78e: 9d 0a 61     STA $610a,X
c791: 9d 0c 61     STA $610c,X
c794: b9 42 b0     LDA $b042,Y
c797: 9d 10 61     STA $6110,X
c79a: b9 43 b0     LDA $b043,Y
c79d: 9d 11 61     STA $6111,X
c7a0: b9 44 b0     LDA $b044,Y
c7a3: 9d 12 61     STA $6112,X
c7a6: b9 45 b0     LDA $b045,Y
c7a9: 9d 13 61     STA $6113,X
c7ac: b9 46 b0     LDA $b046,Y
c7af: 9d 14 61     STA $6114,X
c7b2: b9 47 b0     LDA $b047,Y
c7b5: 9d 20 61     STA $6120,X
c7b8: b9 48 b0     LDA $b048,Y
c7bb: 9d 21 61     STA $6121,X
c7be: b9 49 b0     LDA $b049,Y
c7c1: 9d 23 61     STA $6123,X
c7c4: b9 4a b0     LDA $b04a,Y
c7c7: 9d 25 61     STA $6125,X
c7ca: bd 00 61     LDA $6100,X
c7cd: c9 03        CMP #$03    ; Only give starting magic to RM/WM/BM (not even wizards)
c7cf: 90 0c        BCC +$0c  [$c7dd]
c7d1: c9 06        CMP #$06
c7d3: b0 08        BCS +$08  [$c7dd]
c7d5: a9 02        LDA #$02    ; Starting magic charges
c7d7: 9d 20 63     STA $6320,X
c7da: 9d 28 63     STA $6328,X
c7dd: 60           RTS

; Do damage square damage
c7de: a5 f0        LDA $f0
c7e0: 29 01        AND #$01
c7e2: 09 1e        ORA #$1e
c7e4: 8d 01 20     STA $2001
c7e7: a9 0f        LDA #$0f
c7e9: 8d 0c 40     STA $400c
c7ec: a9 0d        LDA #$0d
c7ee: 8d 0e 40     STA $400e
c7f1: a9 00        LDA #$00
c7f3: 8d 0f 40     STA $400f
c7f6: a5 34        LDA $34
c7f8: f0 67        BEQ +$67  [$c861]
c7fa: 60           RTS

; Do poison step damage
c7fb: ad 01 61     LDA $6101
c7fe: c9 03        CMP #$03
c800: f0 16        BEQ +$16  [$c818]
c802: ad 41 61     LDA $6141
c805: c9 03        CMP #$03
c807: f0 0f        BEQ +$0f  [$c818]
c809: ad 81 61     LDA $6181
c80c: c9 03        CMP #$03
c80e: f0 08        BEQ +$08  [$c818]
c810: ad c1 61     LDA $61c1
c813: c9 03        CMP #$03
c815: f0 01        BEQ +$01  [$c818]
c817: 60           RTS
c818: a9 3a        LDA #$3a
c81a: 8d 04 40     STA $4004
c81d: a9 81        LDA #$81
c81f: 8d 05 40     STA $4005
c822: a9 60        LDA #$60
c824: 8d 06 40     STA $4006
c827: 8d 07 40     STA $4007
c82a: a9 06        LDA #$06
c82c: 85 7e        STA $7e
c82e: a5 34        LDA $34
c830: f0 01        BEQ +$01  [$c833]
c832: 60           RTS
c833: a2 00        LDX #$00
c835: bd 01 61     LDA $6101,X
c838: c9 03        CMP #$03
c83a: d0 1d        BNE +$1d  [$c859]
c83c: bd 0b 61     LDA $610b,X
c83f: d0 07        BNE +$07  [$c848]
c841: bd 0a 61     LDA $610a,X
c844: c9 02        CMP #$02
c846: 90 11        BCC +$11  [$c859]
c848: bd 0a 61     LDA $610a,X
c84b: 38           SEC
c84c: e9 01        SBC #$01
c84e: 9d 0a 61     STA $610a,X
c851: bd 0b 61     LDA $610b,X
c854: e9 00        SBC #$00
c856: 9d 0b 61     STA $610b,X
c859: 8a           TXA
c85a: 18           CLC
c85b: 69 40        ADC #$40
c85d: aa           TAX
c85e: d0 d5        BNE +$d5  [$c835]
c860: 60           RTS

c861: a2 00        LDX #$00
c863: bd 0b 61     LDA $610b,X
c866: d0 07        BNE +$07  [$c86f]
c868: bd 0a 61     LDA $610a,X
c86b: c9 02        CMP #$02
c86d: 90 11        BCC +$11  [$c880]
c86f: bd 0a 61     LDA $610a,X
c872: 38           SEC
c873: e9 01        SBC #$01
c875: 9d 0a 61     STA $610a,X
c878: bd 0b 61     LDA $610b,X
c87b: e9 00        SBC #$00
c87d: 9d 0b 61     STA $610b,X
c880: 8a           TXA
c881: 18           CLC
c882: 69 40        ADC #$40
c884: aa           TAX
c885: d0 dc        BNE +$dc  [$c863]
c887: 60           RTS

; Check SRAM checksum: sum of $6400-67ff (with C re-added as it occurs) == 0xff
c888: a9 00        LDA #$00
c88a: a2 00        LDX #$00
c88c: 18           CLC
c88d: 7d 00 64     ADC $6400,X
c890: 7d 00 65     ADC $6500,X
c893: 7d 00 66     ADC $6600,X
c896: 7d 00 67     ADC $6700,X
c899: e8           INX
c89a: d0 f1        BNE +$f1  [$c88d]
c89c: c9 ff        CMP #$ff
c89e: d0 02        BNE +$02  [$c8a2]
c8a0: 18           CLC
c8a1: 60           RTS
c8a2: 38           SEC
c8a3: 60           RTS

; Add 100 gold
c8a4: a9 64        LDA #$64
c8a6: 85 10        STA $10
c8a8: a9 00        LDA #$00
c8aa: 85 11        STA $11
c8ac: a9 00        LDA #$00
c8ae: 85 12        STA $12
c8b0: 4c ea dd     JMP $ddea   ; Add 3-byte word in $10-12 into gold

c8b3: 20 2e cf     JSR $cf2e   ; Decompress and load map ($48 and $49) and sprites, and do open animation
c8b6: 20 00 fe     JSR $fe00   ; wait for V-blank
c8b9: a9 02        LDA #$02    ; Upload sprites
c8bb: 8d 14 40     STA $4014
c8be: 20 80 cc     JSR $cc80
c8c1: a5 f0        LDA $f0
c8c3: 18           CLC
c8c4: 69 01        ADC #$01
c8c6: 85 f0        STA $f0
c8c8: a5 f1        LDA $f1
c8ca: 69 00        ADC #$00
c8cc: 85 f1        STA $f1
c8ce: 20 81 c6     JSR $c681   ; Start music or play current notes, bank=13
c8d1: a5 32        LDA $32
c8d3: c9 01        CMP #$01
c8d5: d0 03        BNE +$03  [$c8da]
c8d7: 20 01 d4     JSR $d401   ; Something to do with updating the palette map
c8da: a5 34        LDA $34     ;; Currently walking? Skip buttons and such
c8dc: d0 17        BNE +$17  [$c8f5]
c8de: a5 6c        LDA $6c
c8e0: f0 03        BEQ +$03  [$c8e5]
c8e2: 20 4e da     JSR $da4e   ; Do screen shaking (i.e. when getting an orb)?
c8e5: a5 50        LDA $50     ;; Entering a shop?
c8e7: d0 15        BNE +$15  [$c8fe]
c8e9: a5 44        LDA $44
c8eb: 29 e0        AND #$e0
c8ed: f0 03        BEQ +$03  [$c8f2]
c8ef: 4c 18 c9     JMP $c918
c8f2: 20 c4 c9     JSR $c9c4
c8f5: 20 3c c4     JSR $c43c   ; Clear sprites
c8f8: 20 0f e4     JSR $e40f
c8fb: 4c b6 c8     JMP $c8b6
c8fe: 20 94 cb     JSR $cb94   ; p[$10]=map tile data for current position; $52 = (map tile data byte 0) & 0x1e
c901: a9 00        LDA #$00
c903: 85 0d        STA $0d
c905: a9 02        LDA #$02
c907: 20 46 d9     JSR $d946   ; Do palette cycle: A.1 selects palette (reg/room), A.0 selects direction (to/from black)
c90a: a9 0e        LDA #$0e
c90c: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
c90f: 20 30 a3     JSR $a330
c912: 20 3a cf     JSR $cf3a   ; Cycle in to map palette
c915: 4c b6 c8     JMP $c8b6
c918: c9 40        CMP #$40
c91a: b0 30        BCS +$30  [$c94c]
c91c: 20 94 cb     JSR $cb94   ;; BATTLE! ; p[$10]=map tile data for current position; $52 = (map tile data byte 0) & 0x1e
c91f: a9 00        LDA #$00
c921: 85 44        STA $44
c923: 20 cd d8     JSR $d8cd   ; Do battle entry flashing, then BG off and clear sprites
c926: a9 00        LDA #$00
c928: 8d 01 20     STA $2001
c92b: 8d 15 40     STA $4015
c92e: 20 00 e9     JSR $e900  ; Load battle $6a with BG $53
c931: a5 6a        LDA $6a
c933: 20 00 f2     JSR $f200  ; Load battle data ($6a) and start battle
c936: 90 0e        BCC +$0e  [$c946]
c938: 20 9c e8     JSR $e89c  ; Upload ending background!
c93b: a9 0d        LDA #$0d
c93d: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
c940: 20 03 b8     JSR $b803  ; Do ending!
c943: 4c 38 c9     JMP $c938  ; Repeat the ending (should never get here)
c946: 20 3a cf     JSR $cf3a  ; Cycle in to map palette
c949: 4c b6 c8     JMP $c8b6
c94c: d0 04        BNE +$04  [$c952]
c94e: 20 01 d7     JSR $d701  ; Do close animation and WARP back up
c951: 60           RTS
c952: c9 80        CMP #$80
c954: d0 4d        BNE +$4d  [$c9a3]
c956: a5 29        LDA $29    ;; map to map teleport
c958: 48           PHA
c959: a5 2a        LDA $2a
c95b: 48           PHA
c95c: a5 0d        LDA $0d
c95e: 48           PHA
c95f: a5 48        LDA $48
c961: 48           PHA
c962: a5 49        LDA $49
c964: 48           PHA
c965: 20 01 d7     JSR $d701  ; Do close animation
c968: a9 00        LDA #$00
c96a: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
c96d: a6 45        LDX $45
c96f: bd 00 ad     LDA $ad00,X  ; load target
c972: 38           SEC
c973: e9 07        SBC #$07
c975: 29 3f        AND #$3f
c977: 85 29        STA $29
c979: bd 40 ad     LDA $ad40,X
c97c: 38           SEC
c97d: e9 07        SBC #$07
c97f: 29 3f        AND #$3f
c981: 85 2a        STA $2a
c983: bd 80 ad     LDA $ad80,X
c986: 85 48        STA $48
c988: aa           TAX
c989: bd c0 ac     LDA $acc0,X
c98c: 85 49        STA $49
c98e: 20 b3 c8     JSR $c8b3   ; Load new map and do the main map loop
c991: 68           PLA         ; Restore the old map (WARP got us back here)
c992: 85 49        STA $49
c994: 68           PLA
c995: 85 48        STA $48
c997: 68           PLA
c998: 85 0d        STA $0d
c99a: 68           PLA
c99b: 85 2a        STA $2a
c99d: 68           PLA
c99e: 85 29        STA $29
c9a0: 4c b3 c8     JMP $c8b3   ; Load the old map and do the main map loop
c9a3: c9 c0        CMP #$c0
c9a5: d0 1d        BNE +$1d  [$c9c4]
c9a7: 20 01 d7     JSR $d701   ;; MAP->WORLD teleport ; Do close animation
c9aa: a9 00        LDA #$00
c9ac: 20 03 fe     JSR $fe03   ; Show Bank in A in memory locations $8000-$bfff 
c9af: a6 45        LDX $45     ; load new position
c9b1: bd 60 ac     LDA $ac60,X
c9b4: 38           SEC
c9b5: e9 07        SBC #$07
c9b7: 85 27        STA $27
c9b9: bd 70 ac     LDA $ac70,X
c9bc: 38           SEC
c9bd: e9 07        SBC #$07
c9bf: 85 28        STA $28
c9c1: 4c cb c0     JMP $c0cb   ; Load world map and do main loop
c9c4: a5 24        LDA $24     ;; A pressed?
c9c6: f0 64        BEQ +$64  [$ca2c]
c9c8: a9 00        LDA #$00
c9ca: 85 24        STA $24
c9cc: 85 7d        STA $7d
c9ce: 85 56        STA $56
c9d0: 20 00 fe     JSR $fe00   ; wait for V-blank
c9d3: 20 81 c6     JSR $c681   ; Start music or play current notes, bank=13
c9d6: a5 33        LDA $33
c9d8: 20 61 cb     JSR $cb61   ; ($14,$15)=tile moving on to based on position ($29,$2a) and button in A
c9db: 20 25 cb     JSR $cb25
c9de: 86 67        STX $67
c9e0: 08           PHP
c9e1: a9 10        LDA #$10
c9e3: 85 26        STA $26
c9e5: 20 f6 e4     JSR $e4f6
c9e8: 28           PLP
c9e9: a6 67        LDX $67
c9eb: 90 0f        BCC +$0f  [$c9fc]
c9ed: a9 00        LDA #$00
c9ef: 85 44        STA $44
c9f1: a9 0e        LDA #$0e
c9f3: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
c9f6: 20 2b 90     JSR $902b  ; Talk to sprite X
c9f9: 4c 03 ca     JMP $ca03
c9fc: 20 e2 cb     JSR $cbe2
c9ff: a2 00        LDX #$00
ca01: 86 44        STX $44
ca03: 20 b1 d4     JSR $d4b1
ca06: 20 00 fe     JSR $fe00   ; wait for V-blank
ca09: a9 02        LDA #$02    ; Upload sprites
ca0b: 8d 14 40     STA $4014
ca0e: 20 a1 cc     JSR $cca1   ; Set scrolling for map?
ca11: a9 1e        LDA #$1e
ca13: 8d 01 20     STA $2001
ca16: 20 81 c6     JSR $c681   ; Start music or play current notes, bank=13
ca19: 20 02 d6     JSR $d602
ca1c: a5 56        LDA $56
ca1e: f0 03        BEQ +$03  [$ca23]
ca20: 4c 3a cf     JMP $cf3a   ; Cycle in to map palette
ca23: a9 00        LDA #$00
ca25: 85 24        STA $24
ca27: 85 23        STA $23
ca29: 85 22        STA $22
ca2b: 60           RTS
ca2c: a5 23        LDA $23     ;; Start pressed?
ca2e: f0 17        BEQ +$17  [$ca47]
ca30: a9 00        LDA #$00
ca32: 85 23        STA $23
ca34: 20 94 cb     JSR $cb94   ; p[$10]=map tile data for current position; $52 = (map tile data byte 0) & 0x1e
ca37: a9 02        LDA #$02
ca39: 20 46 d9     JSR $d946   ; Do palette cycle: A.1 selects palette (reg/room), A.0 selects direction (to/from black)
ca3c: a9 0e        LDA #$0e
ca3e: 20 03 fe     JSR $fe03   ; Show Bank in A in memory locations $8000-$bfff 
ca41: 20 b3 ad     JSR $adb3
ca44: 4c 3a cf     JMP $cf3a   ; Cycle in to map palette
ca47: a5 22        LDA $22     ;; Select pressed?
ca49: f0 17        BEQ +$17  [$ca62]
ca4b: 20 94 cb     JSR $cb94   ; p[$10]=map tile data for current position; $52 = (map tile data byte 0) & 0x1e
ca4e: a9 00        LDA #$00
ca50: 85 22        STA $22
ca52: a9 02        LDA #$02
ca54: 20 46 d9     JSR $d946   ; Do palette cycle: A.1 selects palette (reg/room), A.0 selects direction (to/from black)
ca57: a9 0e        LDA #$0e
ca59: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
ca5c: 20 15 99     JSR $9915
ca5f: 4c 3a cf     JMP $cf3a   ; Cycle in to map palette
ca62: 20 c2 d7     JSR $d7c2   ; Get button presses in $20-$25
ca65: a5 20        LDA $20
ca67: 29 0f        AND #$0f
ca69: d0 01        BNE +$01  [$ca6c]
ca6b: 60           RTS
ca6c: 85 33        STA $33
ca6e: 20 76 ca     JSR $ca76
ca71: b0 f8        BCS +$f8  [$ca6b]
ca73: 4c 23 d0     JMP $d023

ca76: 20 61 cb     JSR $cb61   ; ($14,$15)=tile moving on to based on position ($29,$2a) and button in A
ca79: 20 a2 ca     JSR $caa2   ; Check if there is a sprite at ($14,$15), or moving off ($14,$15) (?). C set if blocked
ca7c: b0 1c        BCS +$1c  [$ca9a]
ca7e: 20 be cb     JSR $cbbe   ; $44 and $45 = tile data for tile at ($14,$15)
ca81: a5 44        LDA $44
ca83: 29 1f        AND #$1f
ca85: c9 01        CMP #$01
ca87: f0 11        BEQ +$11  [$ca9a]
ca89: 29 1e        AND #$1e
ca8b: aa           TAX
ca8c: bd a1 cd     LDA $cda1,X
ca8f: 85 10        STA $10
ca91: bd a2 cd     LDA $cda2,X
ca94: 85 11        STA $11
ca96: 8a           TXA
ca97: 6c 10 00     JMP ($0010)
ca9a: a9 00        LDA #$00
ca9c: 85 44        STA $44
ca9e: 85 45        STA $45
caa0: 38           SEC
caa1: 60           RTS

; Check if there is a sprite at ($14,$15), or moving off ($14,$15) (?). C set if blocked
caa2: a2 00        LDX #$00     ;; Look for sprite
caa4: bd 00 6f     LDA $6f00,X
caa7: f0 18        BEQ +$18  [$cac1]
caa9: bd 02 6f     LDA $6f02,X
caac: c5 14        CMP $14
caae: d0 11        BNE +$11  [$cac1]
cab0: bd 03 6f     LDA $6f03,X
cab3: c5 15        CMP $15
cab5: d0 0a        BNE +$0a  [$cac1]
cab7: bd 0b 6f     LDA $6f0b,X  ;; Found one, make it move faster
caba: 29 03        AND #$03
cabc: 9d 0b 6f     STA $6f0b,X
cabf: 38           SEC
cac0: 60           RTS
cac1: 8a           TXA
cac2: 18           CLC
cac3: 69 10        ADC #$10
cac5: aa           TAX
cac6: c9 f0        CMP #$f0
cac8: 90 da        BCC +$da  [$caa4]
caca: a2 00        LDX #$00    ;; None there, check if a sprite is moving off (?)
cacc: bd 00 6f     LDA $6f00,X
cacf: f0 49        BEQ +$49  [$cb1a]
cad1: bd 08 6f     LDA $6f08,X
cad4: 30 1a        BMI +$1a  [$caf0]
cad6: bd 09 6f     LDA $6f09,X
cad9: 10 2a        BPL +$2a  [$cb05]
cadb: bd 04 6f     LDA $6f04,X
cade: c5 14        CMP $14
cae0: d0 38        BNE +$38  [$cb1a]
cae2: bd 05 6f     LDA $6f05,X
cae5: 18           CLC
cae6: 69 01        ADC #$01
cae8: 29 3f        AND #$3f
caea: c5 15        CMP $15
caec: d0 2c        BNE +$2c  [$cb1a]
caee: f0 23        BEQ +$23  [$cb13]
caf0: bd 04 6f     LDA $6f04,X
caf3: 18           CLC
caf4: 69 01        ADC #$01
caf6: 29 3f        AND #$3f
caf8: c5 14        CMP $14
cafa: d0 1e        BNE +$1e  [$cb1a]
cafc: bd 05 6f     LDA $6f05,X
caff: c5 15        CMP $15
cb01: d0 17        BNE +$17  [$cb1a]
cb03: f0 0e        BEQ +$0e  [$cb13]
cb05: bd 04 6f     LDA $6f04,X
cb08: c5 14        CMP $14
cb0a: d0 0e        BNE +$0e  [$cb1a]
cb0c: bd 05 6f     LDA $6f05,X
cb0f: c5 15        CMP $15
cb11: d0 07        BNE +$07  [$cb1a]
cb13: a9 01        LDA #$01     ; Found one, set flag
cb15: 9d 0d 6f     STA $6f0d,X
cb18: 18           CLC
cb19: 60           RTS
cb1a: 8a           TXA
cb1b: 18           CLC
cb1c: 69 10        ADC #$10
cb1e: aa           TAX
cb1f: c9 f0        CMP #$f0
cb21: 90 a9        BCC +$a9  [$cacc]
cb23: 18           CLC
cb24: 60           RTS

; Check if there is a sprite at ($14,$15). C set if blocked, and X=offset
cb25: a2 00        LDX #$00
cb27: bd 00 6f     LDA $6f00,X
cb2a: f0 2a        BEQ +$2a  [$cb56]
cb2c: bd 06 6f     LDA $6f06,X
cb2f: c9 08        CMP #$08
cb31: bd 04 6f     LDA $6f04,X
cb34: 69 00        ADC #$00
cb36: 29 3f        AND #$3f
cb38: c5 14        CMP $14
cb3a: d0 1a        BNE +$1a  [$cb56]
cb3c: bd 07 6f     LDA $6f07,X
cb3f: c9 08        CMP #$08
cb41: bd 05 6f     LDA $6f05,X
cb44: 69 00        ADC #$00
cb46: 29 3f        AND #$3f
cb48: c5 15        CMP $15
cb4a: d0 0a        BNE +$0a  [$cb56]
cb4c: bd 0d 6f     LDA $6f0d,X
cb4f: 09 80        ORA #$80
cb51: 9d 0d 6f     STA $6f0d,X
cb54: 38           SEC
cb55: 60           RTS
cb56: 8a           TXA
cb57: 18           CLC
cb58: 69 10        ADC #$10
cb5a: aa           TAX
cb5b: c9 f0        CMP #$f0
cb5d: 90 c8        BCC +$c8  [$cb27]
cb5f: 18           CLC
cb60: 60           RTS

; ($14,$15)=tile moving on to based on position ($29,$2a) and button in A
cb61: 4a           LSR
cb62: b0 14        BCS +$14  [$cb78]
cb64: 4a           LSR
cb65: b0 18        BCS +$18  [$cb7f]
cb67: 4a           LSR
cb68: b0 07        BCS +$07  [$cb71]
cb6a: a2 07        LDX #$07
cb6c: a0 06        LDY #$06
cb6e: 4c 83 cb     JMP $cb83
cb71: a2 07        LDX #$07
cb73: a0 08        LDY #$08
cb75: 4c 83 cb     JMP $cb83
cb78: a2 08        LDX #$08
cb7a: a0 07        LDY #$07
cb7c: 4c 83 cb     JMP $cb83
cb7f: a2 06        LDX #$06
cb81: a0 07        LDY #$07
cb83: 8a           TXA
cb84: 18           CLC
cb85: 65 29        ADC $29
cb87: 29 3f        AND #$3f
cb89: 85 14        STA $14
cb8b: 98           TYA
cb8c: 18           CLC
cb8d: 65 2a        ADC $2a
cb8f: 29 3f        AND #$3f
cb91: 85 15        STA $15
cb93: 60           RTS

; p[$10]=map tile data for current position; $52 = (map tile data byte 0) & 0x1e
cb94: a5 2a        LDA $2a
cb96: 18           CLC
cb97: 69 07        ADC #$07
cb99: 29 3f        AND #$3f
cb9b: aa           TAX
cb9c: 4a           LSR
cb9d: 4a           LSR
cb9e: 09 70        ORA #$70
cba0: 85 11        STA $11
cba2: 8a           TXA
cba3: 6a           ROR
cba4: 6a           ROR
cba5: 6a           ROR
cba6: 29 c0        AND #$c0
cba8: 85 10        STA $10
cbaa: a5 29        LDA $29
cbac: 18           CLC
cbad: 69 07        ADC #$07
cbaf: 29 3f        AND #$3f
cbb1: a8           TAY
cbb2: b1 10        LDA ($10),Y
cbb4: 0a           ASL
cbb5: aa           TAX
cbb6: bd 00 04     LDA $0400,X
cbb9: 29 1e        AND #$1e
cbbb: 85 52        STA $52
cbbd: 60           RTS

; $44 and $45 = tile data for tile at ($14,$15)
cbbe: a5 15        LDA $15
cbc0: 4a           LSR
cbc1: 4a           LSR
cbc2: 09 70        ORA #$70
cbc4: 85 11        STA $11
cbc6: a5 15        LDA $15
cbc8: 6a           ROR
cbc9: 6a           ROR
cbca: 6a           ROR
cbcb: 29 c0        AND #$c0
cbcd: 05 14        ORA $14
cbcf: 85 10        STA $10
cbd1: a0 00        LDY #$00
cbd3: b1 10        LDA ($10),Y
cbd5: 0a           ASL
cbd6: a8           TAY
cbd7: b9 00 04     LDA $0400,Y
cbda: 85 44        STA $44
cbdc: b9 01 04     LDA $0401,Y
cbdf: 85 45        STA $45
cbe1: 60           RTS

cbe2: 20 be cb     JSR $cbbe   ; $44 and $45 = tile data for tile at ($14,$15)
cbe5: a5 44        LDA $44
cbe7: 29 1e        AND #$1e
cbe9: c9 08        CMP #$08
cbeb: f0 0c        BEQ +$0c  [$cbf9]
cbed: a5 44        LDA $44
cbef: 29 c2        AND #$c2
cbf1: d0 03        BNE +$03  [$cbf6]
cbf3: a5 45        LDA $45
cbf5: 60           RTS
cbf6: a9 00        LDA #$00
cbf8: 60           RTS
cbf9: a6 45        LDX $45
cbfb: bd 00 62     LDA $6200,X
cbfe: 29 04        AND #$04
cc00: f0 03        BEQ +$03  [$cc05]
cc02: a9 f2        LDA #$f2
cc04: 60           RTS
cc05: 4c 78 dd     JMP $dd78   ; Open treasure chest in $45

; Load map tile data (in $49) into $0400-04ff, pattern data into $0500-$06ff, palette map into $0700-077f, and palettes into $0780-07af
cc08: a9 00        LDA #$00
cc0a: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
cc0d: a9 00        LDA #$00    ;; Load map tile data
cc0f: 85 10        STA $10
cc11: 85 12        STA $12
cc13: a5 49        LDA $49
cc15: 18           CLC
cc16: 69 88        ADC #$88
cc18: 85 11        STA $11
cc1a: a9 04        LDA #$04
cc1c: 85 13        STA $13
cc1e: 20 74 cc     JSR $cc74   ; Copy 256 bytes from p[$10] to p[$12]
cc21: a5 49        LDA $49     ;; Load map pattern data
cc23: 0a           ASL
cc24: 69 90        ADC #$90
cc26: 85 11        STA $11
cc28: 20 74 cc     JSR $cc74   ; Copy 256 bytes from p[$10] to p[$12]
cc2b: e6 11        INC $11
cc2d: 20 74 cc     JSR $cc74   ; Copy 256 bytes from p[$10] to p[$12]
cc30: a5 49        LDA $49     ;; Load map palette map
cc32: 4a           LSR
cc33: 09 84        ORA #$84
cc35: 85 11        STA $11
cc37: 90 04        BCC +$04  [$cc3d]
cc39: a9 80        LDA #$80
cc3b: 85 10        STA $10
cc3d: b1 10        LDA ($10),Y
cc3f: 99 00 07     STA $0700,Y
cc42: c8           INY
cc43: 10 f8        BPL +$f8  [$cc3d]
cc45: a9 00        LDA #$00    ;; Load map palettes
cc47: 85 11        STA $11
cc49: a5 48        LDA $48
cc4b: 0a           ASL
cc4c: 0a           ASL
cc4d: 0a           ASL
cc4e: 26 11        ROL $11
cc50: 0a           ASL
cc51: 26 11        ROL $11
cc53: 85 10        STA $10
cc55: a6 11        LDX $11
cc57: 06 10        ASL $10
cc59: 26 11        ROL $11
cc5b: 18           CLC
cc5c: 65 10        ADC $10
cc5e: 85 10        STA $10
cc60: 8a           TXA
cc61: 65 11        ADC $11
cc63: 09 a0        ORA #$a0
cc65: 85 11        STA $11
cc67: a0 00        LDY #$00
cc69: b1 10        LDA ($10),Y
cc6b: 99 80 07     STA $0780,Y
cc6e: c8           INY
cc6f: c0 30        CPY #$30
cc71: 90 f6        BCC +$f6  [$cc69]
cc73: 60           RTS

; Copy 256 bytes from p[$10] to p[$12]
cc74: a0 00        LDY #$00
cc76: b1 10        LDA ($10),Y
cc78: 91 12        STA ($12),Y
cc7a: c8           INY
cc7b: d0 f9        BNE +$f9  [$cc76]
cc7d: e6 13        INC $13
cc7f: 60           RTS

cc80: a9 1e        LDA #$1e
cc82: 8d 01 20     STA $2001
cc85: 20 bb ce     JSR $cebb   ; Open or close door, depending on $0d flags
cc88: ad 02 20     LDA $2002
cc8b: a5 34        LDA $34
cc8d: f0 12        BEQ +$12  [$cca1]
cc8f: 20 1b cd     JSR $cd1b
cc92: 20 fb c7     JSR $c7fb   ; Do poison step damage
cc95: a5 44        LDA $44
cc97: 29 1e        AND #$1e
cc99: c9 0c        CMP #$0c
cc9b: d0 03        BNE +$03  [$cca0]
cc9d: 4c de c7     JMP $c7de   ; Do damage square damage
cca0: 60           RTS

; Set scrolling for map?
cca1: a5 fd        LDA $fd
cca3: 85 ff        STA $ff
cca5: 8d 00 20     STA $2000
cca8: a5 29        LDA $29
ccaa: 0a           ASL
ccab: 0a           ASL
ccac: 0a           ASL
ccad: 0a           ASL
ccae: 05 35        ORA $35
ccb0: 8d 05 20     STA $2005
ccb3: a5 2f        LDA $2f
ccb5: 0a           ASL
ccb6: 0a           ASL
ccb7: 0a           ASL
ccb8: 0a           ASL
ccb9: 05 36        ORA $36
ccbb: 8d 05 20     STA $2005
ccbe: 60           RTS

ccbf: a5 32        LDA $32
ccc1: f0 03        BEQ +$03  [$ccc6]
ccc3: 20 e9 d0     JSR $d0e9
ccc6: 20 a1 cc     JSR $cca1   ; Set scrolling for map?
ccc9: a5 35        LDA $35
cccb: 18           CLC
cccc: 65 34        ADC $34
ccce: 29 0f        AND #$0f
ccd0: f0 03        BEQ +$03  [$ccd5]
ccd2: 85 35        STA $35
ccd4: 60           RTS
ccd5: 85 34        STA $34
ccd7: 85 35        STA $35
ccd9: a5 29        LDA $29
ccdb: 18           CLC
ccdc: 69 01        ADC #$01
ccde: 29 3f        AND #$3f
cce0: 85 29        STA $29
cce2: 29 10        AND #$10
cce4: 46 fd        LSR $fd
cce6: c9 10        CMP #$10
cce8: 26 fd        ROL $fd
ccea: 60           RTS
cceb: a5 32        LDA $32
cced: f0 03        BEQ +$03  [$ccf2]
ccef: 20 e9 d0     JSR $d0e9
ccf2: 20 a1 cc     JSR $cca1   ; Set scrolling for map?
ccf5: a5 35        LDA $35
ccf7: d0 13        BNE +$13  [$cd0c]
ccf9: a5 29        LDA $29
ccfb: 38           SEC
ccfc: e9 01        SBC #$01
ccfe: 29 3f        AND #$3f
cd00: 85 29        STA $29
cd02: 29 10        AND #$10
cd04: 46 fd        LSR $fd
cd06: c9 10        CMP #$10
cd08: 26 fd        ROL $fd
cd0a: a5 35        LDA $35
cd0c: 38           SEC
cd0d: e5 34        SBC $34
cd0f: 29 0f        AND #$0f
cd11: f0 03        BEQ +$03  [$cd16]
cd13: 85 35        STA $35
cd15: 60           RTS
cd16: 85 34        STA $34
cd18: 85 35        STA $35
cd1a: 60           RTS

cd1b: a5 33        LDA $33
cd1d: 4a           LSR
cd1e: b0 9f        BCS +$9f  [$ccbf]
cd20: 4a           LSR
cd21: b0 c8        BCS +$c8  [$cceb]
cd23: 4a           LSR
cd24: b0 03        BCS +$03  [$cd29]
cd26: 4c 64 cd     JMP $cd64
cd29: a5 32        LDA $32
cd2b: f0 0d        BEQ +$0d  [$cd3a]
cd2d: c9 01        CMP #$01
cd2f: f0 06        BEQ +$06  [$cd37]
cd31: a5 36        LDA $36
cd33: c9 08        CMP #$08
cd35: d0 03        BNE +$03  [$cd3a]
cd37: 20 e9 d0     JSR $d0e9
cd3a: 20 a1 cc     JSR $cca1   ; Set scrolling for map?
cd3d: a5 36        LDA $36
cd3f: 18           CLC
cd40: 65 34        ADC $34
cd42: 29 0f        AND #$0f
cd44: f0 03        BEQ +$03  [$cd49]
cd46: 85 36        STA $36
cd48: 60           RTS
cd49: 85 34        STA $34
cd4b: 85 36        STA $36
cd4d: a5 2a        LDA $2a
cd4f: 18           CLC
cd50: 69 01        ADC #$01
cd52: 29 3f        AND #$3f
cd54: 85 2a        STA $2a
cd56: a5 2f        LDA $2f
cd58: 18           CLC
cd59: 69 01        ADC #$01
cd5b: c9 0f        CMP #$0f
cd5d: 90 02        BCC +$02  [$cd61]
cd5f: e9 0f        SBC #$0f
cd61: 85 2f        STA $2f
cd63: 60           RTS
cd64: a5 32        LDA $32
cd66: f0 0d        BEQ +$0d  [$cd75]
cd68: c9 01        CMP #$01
cd6a: f0 06        BEQ +$06  [$cd72]
cd6c: a5 36        LDA $36
cd6e: c9 08        CMP #$08
cd70: d0 03        BNE +$03  [$cd75]
cd72: 20 e9 d0     JSR $d0e9
cd75: 20 a1 cc     JSR $cca1   ; Set scrolling for map?
cd78: a5 36        LDA $36
cd7a: d0 16        BNE +$16  [$cd92]
cd7c: a5 2a        LDA $2a
cd7e: 38           SEC
cd7f: e9 01        SBC #$01
cd81: 29 3f        AND #$3f
cd83: 85 2a        STA $2a
cd85: a5 2f        LDA $2f
cd87: 38           SEC
cd88: e9 01        SBC #$01
cd8a: b0 02        BCS +$02  [$cd8e]
cd8c: 69 0f        ADC #$0f
cd8e: 85 2f        STA $2f
cd90: a5 36        LDA $36
cd92: 38           SEC
cd93: e5 34        SBC $34
cd95: 29 0f        AND #$0f
cd97: f0 03        BEQ +$03  [$cd9c]
cd99: 85 36        STA $36
cd9b: 60           RTS
cd9c: 85 34        STA $34
cd9e: 85 36        STA $36
cda0: 60           RTS

cda1: 51 ce        .DW $ce51  ; No battle (generic can walk)
cda3: 53 ce        .DW $ce53  ; Door (+1 is shop, or 0 for normal door)
cda5: 53 ce        .DW $ce53  ; KEY door
cda7: 44 ce        .DW $ce44  ; Close the door behind you
cda9: c1 cd        .DW $cdc1  ; Chest (generic can't walk here)
cdab: c3 cd        .DW $cdc3  ; Battle/spiked square (+1 is battle number if <128)
cdad: e4 cd        .DW $cde4  ; Damage square (generic can walk)
cdaf: e6 cd        .DW $cde6  ; Need CROWN
cdb1: f3 cd        .DW $cdf3  ; Need CUBE
cdb3: fa cd        .DW $cdfa  ; Need all ORBS
cdb5: 0e ce        .DW $ce0e  ; Use ROD  (generic can walk)
cdb7: 10 ce        .DW $ce10  ; Use LUTE (generic can walk)
cdb9: 12 ce        .DW $ce12  ; Give EARTH
cdbb: 1e ce        .DW $ce1e  ; Give FIRE
cdbd: 2a ce        .DW $ce2a  ; Give WATER
cdbf: 36 ce        .DW $ce36  ; Give WIND

; Can't walk here
cdc1: 38           SEC
cdc2: 60           RTS

; Random battle or spiked square, depending on $45 bit 7
cdc3: a5 45        LDA $45
cdc5: 10 15        BPL +$15  [$cddc]
cdc7: 20 71 c5     JSR $c571   ; Next step random number (for battle)
cdca: c5 f8        CMP $f8
cdcc: b0 0c        BCS +$0c  [$cdda]
cdce: a5 48        LDA $48
cdd0: 18           CLC
cdd1: 69 40        ADC #$40
cdd3: 20 4a c5     JSR $c54a   ; Choose random battle (domain A)
cdd6: a9 20        LDA #$20    ; Set "do battle" flag
cdd8: 85 44        STA $44
cdda: 18           CLC
cddb: 60           RTS
cddc: 85 6a        STA $6a     ; Spiked square! Store battle
cdde: a9 20        LDA #$20
cde0: 85 44        STA $44
cde2: 18           CLC
cde3: 60           RTS

; Generic can walk here
cde4: 18           CLC
cde5: 60           RTS

; Need CROWN to walk here
cde6: ad 22 60     LDA $6022
cde9: f0 02        BEQ +$02  [$cded]
cdeb: d0 1b        BNE +$1b  [$ce08]
cded: 38           SEC
cdee: a9 00        LDA #$00
cdf0: 85 44        STA $44
cdf2: 60           RTS

; Need CUBE to walk here
cdf3: ad 2e 60     LDA $602e
cdf6: f0 f5        BEQ +$f5  [$cded]
cdf8: d0 0e        BNE +$0e  [$ce08]

; Need all ORBS to walk here
cdfa: ad 32 60     LDA $6032
cdfd: 2d 33 60     AND $6033
ce00: 2d 34 60     AND $6034
ce03: 2d 35 60     AND $6035
ce06: f0 e5        BEQ +$e5  [$cded]
ce08: a9 54        LDA #$54
ce0a: 85 4b        STA $4b
ce0c: 18           CLC
ce0d: 60           RTS

; Generic can walk here
ce0e: 18           CLC
ce0f: 60           RTS

; Generic can walk here
ce10: 18           CLC
ce11: 60           RTS

; Give EARTH
ce12: ad 35 60     LDA $6035
ce15: d0 38        BNE +$38  [$ce4f]
ce17: a9 01        LDA #$01
ce19: 8d 35 60     STA $6035
ce1c: d0 22        BNE +$22  [$ce40]

; Give FIRE
ce1e: ad 32 60     LDA $6032
ce21: d0 2c        BNE +$2c  [$ce4f]
ce23: a9 01        LDA #$01
ce25: 8d 32 60     STA $6032
ce28: d0 16        BNE +$16  [$ce40]

; Give WATER
ce2a: ad 33 60     LDA $6033
ce2d: d0 20        BNE +$20  [$ce4f]
ce2f: a9 01        LDA #$01
ce31: 8d 33 60     STA $6033
ce34: d0 0a        BNE +$0a  [$ce40]

; Give WIND
ce36: ad 34 60     LDA $6034
ce39: d0 14        BNE +$14  [$ce4f]
ce3b: a9 01        LDA #$01
ce3d: 8d 34 60     STA $6034
ce40: e6 6c        INC $6c
ce42: 18           CLC
ce43: 60           RTS

; Close the door behind you
ce44: a5 0d        LDA $0d
ce46: 10 07        BPL +$07  [$ce4f]
ce48: 49 84        EOR #$84
ce4a: 85 0d        STA $0d
ce4c: 20 1e cf     JSR $cf1e   ; Door open sound?
ce4f: 18           CLC
ce50: 60           RTS

; Generic "can walk here"
ce51: 18           CLC
ce52: 60           RTS

; General door handling
ce53: 4a           LSR       ; Is KEY door?
ce54: 29 03        AND #$03
ce56: c9 02        CMP #$02
ce58: d0 0b        BNE +$0b  [$ce65]
ce5a: a2 00        LDX #$00  ; Yes, clear shop flag
ce5c: 86 45        STX $45
ce5e: ae 25 60     LDX $6025 ; If no key, deny walking here
ce61: d0 02        BNE +$02  [$ce65]
ce63: 38           SEC
ce64: 60           RTS
ce65: 06 0d        ASL $0d   ; Normal door or key door with KEY
ce67: 85 0d        STA $0d
ce69: b0 03        BCS +$03  [$ce6e]
ce6b: 20 1e cf     JSR $cf1e ; Door open sound?
ce6e: a5 2f        LDA $2f   ;; All this calculates door position in VRAM and stores it in $0e-0f
ce70: 18           CLC
ce71: 69 07        ADC #$07
ce73: aa           TAX
ce74: a5 20        LDA $20
ce76: 29 0f        AND #$0f
ce78: c9 04        CMP #$04
ce7a: 90 07        BCC +$07  [$ce83]
ce7c: e8           INX
ce7d: c9 04        CMP #$04
ce7f: f0 02        BEQ +$02  [$ce83]
ce81: ca           DEX
ce82: ca           DEX
ce83: 8a           TXA
ce84: c9 0f        CMP #$0f
ce86: 90 02        BCC +$02  [$ce8a]
ce88: e9 0f        SBC #$0f
ce8a: aa           TAX
ce8b: a5 14        LDA $14
ce8d: 29 1f        AND #$1f
ce8f: c9 10        CMP #$10
ce91: b0 0e        BCS +$0e  [$cea1]
ce93: 0a           ASL
ce94: 1d e2 d5     ORA $d5e2,X
ce97: 85 0e        STA $0e
ce99: bd f2 d5     LDA $d5f2,X
ce9c: 85 0f        STA $0f
ce9e: 4c b0 ce     JMP $ceb0
cea1: 29 0f        AND #$0f
cea3: 0a           ASL
cea4: 1d e2 d5     ORA $d5e2,X
cea7: 85 0e        STA $0e
cea9: bd f2 d5     LDA $d5f2,X
ceac: 09 04        ORA #$04
ceae: 85 0f        STA $0f
ceb0: a5 45        LDA $45      ; Check if this is a shop door
ceb2: f0 04        BEQ +$04  [$ceb8]
ceb4: 85 51        STA $51      ; Yes, open shop screen, else just allow walking
ceb6: e6 50        INC $50
ceb8: 18           CLC
ceb9: 60           RTS
ceba: 60           RTS

; Open or close door, depending on $0d flags
cebb: a5 0d        LDA $0d
cebd: f0 fb        BEQ +$fb  [$ceba]
cebf: 30 f9        BMI +$f9  [$ceba]
cec1: 29 07        AND #$07
cec3: c9 01        CMP #$01    ; 01 = in room, hide sprites, open door
cec5: f0 1d        BEQ +$1d  [$cee4]
cec7: c9 02        CMP #$02    ; 02 = in room, show sprites, open door
cec9: f0 12        BEQ +$12  [$cedd]
cecb: c9 05        CMP #$05    ; 05 = not in room, close door (36)
cecd: f0 07        BEQ +$07  [$ced6]
cecf: a9 00        LDA #$00    ; else = not in room, close door (3b)
ced1: a2 3b        LDX #$3b
ced3: 4c e8 ce     JMP $cee8
ced6: a9 00        LDA #$00
ced8: a2 36        LDX #$36
ceda: 4c e8 ce     JMP $cee8
cedd: a9 82        LDA #$82
cedf: a2 37        LDX #$37
cee1: 4c e8 ce     JMP $cee8
cee4: a9 81        LDA #$81
cee6: a2 37        LDX #$37
cee8: 85 0d        STA $0d
ceea: ad 02 20     LDA $2002   ; set door tile at p[$0e]
ceed: a5 0f        LDA $0f
ceef: 8d 06 20     STA $2006
cef2: a5 0e        LDA $0e
cef4: 8d 06 20     STA $2006
cef7: bd 00 05     LDA $0500,X
cefa: 8d 07 20     STA $2007
cefd: bd 80 05     LDA $0580,X
cf00: 8d 07 20     STA $2007
cf03: a5 0f        LDA $0f
cf05: 8d 06 20     STA $2006
cf08: a5 0e        LDA $0e
cf0a: 09 20        ORA #$20
cf0c: 8d 06 20     STA $2006
cf0f: bd 00 06     LDA $0600,X
cf12: 8d 07 20     STA $2007
cf15: bd 80 06     LDA $0680,X
cf18: 8d 07 20     STA $2007
cf1b: 4c 62 d8     JMP $d862   ; Upload palettes: BG at $03e0, sprite at $03d0

; Door open sound?
cf1e: a9 0c        LDA #$0c
cf20: 8d 0c 40     STA $400c
cf23: a9 0e        LDA #$0e
cf25: 8d 0e 40     STA $400e
cf28: a9 30        LDA #$30
cf2a: 8d 0f 40     STA $400f
cf2d: 60           RTS

; Decompress and load map ($48 and $49) and sprites, and do open animation
cf2e: 20 42 cf     JSR $cf42   ; Decompress map ($48) and load sprites
cf31: 20 55 cf     JSR $cf55   ; Load map ($48 and $49)?
cf34: 20 cb cf     JSR $cfcb   ; NASIR's hack protection?
cf37: 4c dc d6     JMP $d6dc   ; Do open animation

; Cycle in to room palette
cf3a: 20 55 cf     JSR $cf55   ; Load map ($48 and $49)?
cf3d: a9 03        LDA #$03
cf3f: 4c 46 d9     JMP $d946   ; Do palette cycle: A.1 selects palette (reg/room), A.0 selects direction (to/from black)

; Decompress map ($48) and load sprites
cf42: a9 01        LDA #$01
cf44: 85 2d        STA $2d
cf46: a9 00        LDA #$00
cf48: 8d 00 20     STA $2000
cf4b: 8d 01 20     STA $2001
cf4e: 20 26 d1     JSR $d126  ; Decompress map ($48) to $7000
cf51: 20 eb e7     JSR $e7eb  ; Load sprite structs for map ($48) into $6f00-ef
cf54: 60           RTS

; Load map ($48 and $49)?
cf55: a9 00        LDA #$00
cf57: 8d 00 20     STA $2000
cf5a: 8d 01 20     STA $2001
cf5d: 8d 0c 40     STA $400c
cf60: 85 22        STA $22
cf62: 85 23        STA $23
cf64: 85 24        STA $24
cf66: 85 25        STA $25
cf68: 85 6c        STA $6c
cf6a: 85 44        STA $44
cf6c: 85 45        STA $45
cf6e: 85 50        STA $50
cf70: 20 12 e9     JSR $e912   ; Load map tiles ($49) and sprites for map ($48)
cf73: 20 08 cc     JSR $cc08   ; Load map tile data (in $49) into $0400-04ff, pattern data into $0500-$06ff, palette map into $0700-077f, and palettes into $0780-07af
cf76: 20 ab d8     JSR $d8ab   ; Copy map palettes into position
cf79: 20 e7 cf     JSR $cfe7
cf7c: a5 29        LDA $29
cf7e: 29 10        AND #$10
cf80: c9 10        CMP #$10
cf82: 2a           ROL
cf83: 29 01        AND #$01
cf85: 09 08        ORA #$08
cf87: 85 fd        STA $fd
cf89: 85 ff        STA $ff
cf8b: 20 00 fe     JSR $fe00   ; wait for V-blank
cf8e: 20 62 d8     JSR $d862   ; Upload palettes: BG at $03e0, sprite at $03d0
cf91: 20 a1 cc     JSR $cca1   ; Set scrolling for map?
cf94: a9 00        LDA #$00
cf96: 8d 01 20     STA $2001
cf99: a6 49        LDX $49
cf9b: bd c3 cf     LDA $cfc3,X  ; Set background music
cf9e: 85 4b        STA $4b
cfa0: 85 7c        STA $7c
cfa2: a9 04        LDA #$04
cfa4: 85 33        STA $33
cfa6: a5 29        LDA $29
cfa8: 18           CLC
cfa9: 69 07        ADC #$07
cfab: 85 68        STA $68
cfad: a5 2a        LDA $2a
cfaf: 18           CLC
cfb0: 69 07        ADC #$07
cfb2: 85 69        STA $69
cfb4: a9 0b        LDA #$0b
cfb6: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
cfb9: a6 48        LDX $48    ; Map battle frequency?
cfbb: bd 01 8c     LDA $8c01,X
cfbe: 85 f8        STA $f8
cfc0: 4c 94 cb     JMP $cb94  ; p[$10]=map tile data for current position; $52 = (map tile data byte 0) & 0x1e

; Background music per tileset
cfc3: 47 48 49 4a 4b 4c 4d 4e 

; NASIR's hack protection? Jumps to a random address unless "PROGRAMMED BY
; N A S I R" and the pointers to it haven't been altered.
cfcb: a9 0d        LDA #$0d
cfcd: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
cfd0: a0 25        LDY #$25
cfd2: ae 18 ba     LDX $ba18  ; Tricky way to load $bb00?
cfd5: 86 11        STX $11
cfd7: 85 10        STA $10
cfd9: 18           CLC
cfda: 71 10        ADC ($10),Y
cfdc: 88           DEY
cfdd: 10 fb        BPL +$fb  [$cfda]
cfdf: 49 ae        EOR #$ae
cfe1: f0 03        BEQ +$03  [$cfe6]
cfe3: 68           PLA
cfe4: 68           PLA
cfe5: 68           PLA
cfe6: 60           RTS

cfe7: a9 00        LDA #$00
cfe9: 85 2f        STA $2f
cfeb: a5 2d        LDA $2d
cfed: 4a           LSR
cfee: b0 0a        BCS +$0a  [$cffa]
cff0: a5 28        LDA $28
cff2: 18           CLC
cff3: 69 0f        ADC #$0f
cff5: 85 28        STA $28
cff7: 4c 03 d0     JMP $d003
cffa: a5 2a        LDA $2a
cffc: 18           CLC
cffd: 69 0f        ADC #$0f
cfff: 29 3f        AND #$3f
d001: 85 2a        STA $2a
d003: a9 08        LDA #$08
d005: 85 33        STA $33
d007: 20 23 d0     JSR $d023
d00a: 20 e9 d2     JSR $d2e9
d00d: 20 01 d4     JSR $d401   ; Something to do with updating the palette map
d010: 20 6f d4     JSR $d46f
d013: 20 02 d1     JSR $d102
d016: a5 2f        LDA $2f
d018: d0 ed        BNE +$ed  [$d007]
d01a: a9 00        LDA #$00
d01c: 85 33        STA $33
d01e: 85 32        STA $32
d020: 85 34        STA $34
d022: 60           RTS

d023: a5 2f        LDA $2f
d025: 85 30        STA $30
d027: a9 ff        LDA #$ff
d029: 85 18        STA $18
d02b: a6 27        LDX $27
d02d: a4 28        LDY $28
d02f: a5 2d        LDA $2d
d031: 4a           LSR
d032: 90 08        BCC +$08  [$d03c]
d034: a6 29        LDX $29
d036: a4 2a        LDY $2a
d038: a9 3f        LDA #$3f
d03a: 85 18        STA $18
d03c: 86 2b        STX $2b
d03e: 84 2c        STY $2c
d040: 8a           TXA
d041: 29 1f        AND #$1f
d043: 85 31        STA $31
d045: a5 33        LDA $33
d047: 4a           LSR
d048: b0 0a        BCS +$0a  [$d054]
d04a: 4a           LSR
d04b: b0 3d        BCS +$3d  [$d08a]
d04d: 4a           LSR
d04e: b0 4b        BCS +$4b  [$d09b]
d050: 4a           LSR
d051: b0 64        BCS +$64  [$d0b7]
d053: 60           RTS
d054: a5 29        LDA $29
d056: 18           CLC
d057: 69 08        ADC #$08
d059: 29 3f        AND #$3f
d05b: 85 68        STA $68
d05d: a5 2b        LDA $2b
d05f: 18           CLC
d060: 69 10        ADC #$10
d062: 25 18        AND $18
d064: 85 2b        STA $2b
d066: 29 1f        AND #$1f
d068: 85 31        STA $31
d06a: a5 2d        LDA $2d
d06c: 09 02        ORA #$02
d06e: 85 2d        STA $2d
d070: 20 58 d2     JSR $d258
d073: a9 02        LDA #$02
d075: 85 32        STA $32
d077: a9 01        LDA #$01
d079: 85 34        STA $34
d07b: a5 2d        LDA $2d
d07d: 4a           LSR
d07e: b0 09        BCS +$09  [$d089]
d080: a5 42        LDA $42
d082: c9 02        CMP #$02
d084: 90 03        BCC +$03  [$d089]
d086: 4a           LSR
d087: 85 34        STA $34
d089: 60           RTS
d08a: a5 29        LDA $29
d08c: 18           CLC
d08d: 69 06        ADC #$06
d08f: 29 3f        AND #$3f
d091: 85 68        STA $68
d093: a5 2b        LDA $2b
d095: 38           SEC
d096: e9 01        SBC #$01
d098: 4c 62 d0     JMP $d062
d09b: a5 2a        LDA $2a
d09d: 18           CLC
d09e: 69 08        ADC #$08
d0a0: 29 3f        AND #$3f
d0a2: 85 69        STA $69
d0a4: a9 0f        LDA #$0f
d0a6: 85 10        STA $10
d0a8: a5 30        LDA $30
d0aa: 18           CLC
d0ab: 69 0f        ADC #$0f
d0ad: c9 0f        CMP #$0f
d0af: 90 1d        BCC +$1d  [$d0ce]
d0b1: 38           SEC
d0b2: e9 0f        SBC #$0f
d0b4: 4c ce d0     JMP $d0ce
d0b7: a5 2a        LDA $2a
d0b9: 18           CLC
d0ba: 69 06        ADC #$06
d0bc: 29 3f        AND #$3f
d0be: 85 69        STA $69
d0c0: a9 ff        LDA #$ff
d0c2: 85 10        STA $10
d0c4: a5 30        LDA $30
d0c6: 38           SEC
d0c7: e9 01        SBC #$01
d0c9: b0 03        BCS +$03  [$d0ce]
d0cb: 18           CLC
d0cc: 69 0f        ADC #$0f
d0ce: 85 30        STA $30
d0d0: a5 2c        LDA $2c
d0d2: 18           CLC
d0d3: 65 10        ADC $10
d0d5: 25 18        AND $18
d0d7: 85 2c        STA $2c
d0d9: a5 2d        LDA $2d
d0db: 29 fd        AND #$fd
d0dd: 85 2d        STA $2d
d0df: 20 57 d1     JSR $d157
d0e2: 20 58 d2     JSR $d258
d0e5: 4c 73 d0     JMP $d073

d0e8: 60           RTS

d0e9: ad 02 20     LDA $2002
d0ec: a5 32        LDA $32
d0ee: 38           SEC
d0ef: e9 01        SBC #$01
d0f1: 85 32        STA $32
d0f3: f0 09        BEQ +$09  [$d0fe]
d0f5: c9 01        CMP #$01
d0f7: f0 01        BEQ +$01  [$d0fa]
d0f9: 60           RTS
d0fa: 20 e9 d2     JSR $d2e9
d0fd: 60           RTS
d0fe: 20 6f d4     JSR $d46f
d101: 60           RTS

d102: a5 2d        LDA $2d
d104: 4a           LSR
d105: 90 0c        BCC +$0c  [$d113]
d107: a5 2a        LDA $2a
d109: 38           SEC
d10a: e9 01        SBC #$01
d10c: 29 3f        AND #$3f
d10e: 85 2a        STA $2a
d110: 4c 1a d1     JMP $d11a
d113: a5 28        LDA $28
d115: 38           SEC
d116: e9 01        SBC #$01
d118: 85 28        STA $28
d11a: a5 2f        LDA $2f
d11c: 38           SEC
d11d: e9 01        SBC #$01
d11f: b0 02        BCS +$02  [$d123]
d121: 69 0f        ADC #$0f
d123: 85 2f        STA $2f
d125: 60           RTS

; Decompress map ($48) to $7000
d126: a9 04        LDA #$04
d128: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
d12b: a5 48        LDA $48
d12d: 0a           ASL
d12e: aa           TAX
d12f: bd 00 80     LDA $8000,X
d132: 85 10        STA $10
d134: bd 01 80     LDA $8001,X
d137: a8           TAY
d138: 29 3f        AND #$3f
d13a: 09 80        ORA #$80
d13c: 85 11        STA $11
d13e: 98           TYA
d13f: 2a           ROL
d140: 2a           ROL
d141: 2a           ROL
d142: 29 03        AND #$03
d144: 09 04        ORA #$04
d146: 85 15        STA $15
d148: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
d14b: a9 00        LDA #$00
d14d: 85 12        STA $12
d14f: a9 70        LDA #$70
d151: 85 13        STA $13
d153: 4c 86 d1     JMP $d186  ; Decompress map at p[$10] to p[$12]

d156: 60           RTS
d157: a5 2d        LDA $2d
d159: 4a           LSR
d15a: b0 fa        BCS +$fa  [$d156]
d15c: a9 01        LDA #$01
d15e: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
d161: a9 80        LDA #$80
d163: 85 17        STA $17
d165: a9 00        LDA #$00
d167: 85 16        STA $16
d169: a5 2c        LDA $2c
d16b: aa           TAX
d16c: 0a           ASL
d16d: 90 02        BCC +$02  [$d171]
d16f: e6 17        INC $17
d171: a8           TAY
d172: b1 16        LDA ($16),Y
d174: 85 10        STA $10
d176: c8           INY
d177: b1 16        LDA ($16),Y
d179: 85 11        STA $11
d17b: 8a           TXA
d17c: 29 0f        AND #$0f
d17e: 09 70        ORA #$70
d180: 85 13        STA $13
d182: a9 00        LDA #$00
d184: 85 12        STA $12

; Decompress map at p[$10] to p[$12]
d186: a0 00        LDY #$00
d188: b1 10        LDA ($10),Y
d18a: 10 33        BPL +$33  [$d1bf]
d18c: c9 ff        CMP #$ff
d18e: f0 c6        BEQ +$c6  [$d156]  ; RTS
d190: 29 7f        AND #$7f
d192: 85 14        STA $14
d194: e6 10        INC $10
d196: d0 09        BNE +$09  [$d1a1]
d198: e6 11        INC $11
d19a: 24 11        BIT $11
d19c: 50 03        BVC +$03  [$d1a1]
d19e: 20 d7 d1     JSR $d1d7   ; Wrap to p[$10] to $80xx in next bank
d1a1: b1 10        LDA ($10),Y
d1a3: aa           TAX
d1a4: a5 14        LDA $14
d1a6: 91 12        STA ($12),Y
d1a8: c8           INY
d1a9: f0 0b        BEQ +$0b  [$d1b6]
d1ab: ca           DEX
d1ac: d0 f8        BNE +$f8  [$d1a6]
d1ae: 98           TYA
d1af: 18           CLC
d1b0: 65 12        ADC $12
d1b2: 85 12        STA $12
d1b4: 90 02        BCC +$02  [$d1b8]
d1b6: e6 13        INC $13
d1b8: e6 10        INC $10
d1ba: d0 ca        BNE +$ca  [$d186]  ; Decompress map at p[$10] to p[$12]
d1bc: 4c cb d1     JMP $d1cb
d1bf: 91 12        STA ($12),Y
d1c1: e6 12        INC $12
d1c3: d0 02        BNE +$02  [$d1c7]
d1c5: e6 13        INC $13
d1c7: e6 10        INC $10
d1c9: d0 bb        BNE +$bb  [$d186]  ; Decompress map at p[$10] to p[$12]
d1cb: e6 11        INC $11
d1cd: 24 11        BIT $11
d1cf: 50 b5        BVC +$b5  [$d186]  ; Decompress map at p[$10] to p[$12]
d1d1: 20 d7 d1     JSR $d1d7   ; Wrap to p[$10] to $80xx in next bank
d1d4: 4c 86 d1     JMP $d186   ; Decompress map at p[$10] to p[$12]

; Wrap to p[$10] to $80xx in next bank
d1d7: a9 80        LDA #$80
d1d9: 85 11        STA $11
d1db: a5 15        LDA $15
d1dd: 18           CLC
d1de: 69 01        ADC #$01
d1e0: 4c 03 fe     JMP $fe03  ; Show Bank in A in memory locations $8000-$bfff 
d1e3: 60           RTS

d1e4: a5 2d        LDA $2d
d1e6: 29 02        AND #$02
d1e8: d0 34        BNE +$34  [$d21e]
d1ea: a0 00        LDY #$00
d1ec: b1 10        LDA ($10),Y
d1ee: a8           TAY
d1ef: b9 00 05     LDA $0500,Y
d1f2: 9d 80 07     STA $0780,X
d1f5: b9 80 05     LDA $0580,Y
d1f8: 9d 90 07     STA $0790,X
d1fb: b9 00 06     LDA $0600,Y
d1fe: 9d a0 07     STA $07a0,X
d201: b9 80 06     LDA $0680,Y
d204: 9d b0 07     STA $07b0,X
d207: b9 00 07     LDA $0700,Y
d20a: 9d c0 07     STA $07c0,X
d20d: a5 10        LDA $10
d20f: 18           CLC
d210: 69 01        ADC #$01
d212: 29 3f        AND #$3f
d214: 05 12        ORA $12
d216: 85 10        STA $10
d218: e8           INX
d219: e0 10        CPX #$10
d21b: 90 cd        BCC +$cd  [$d1ea]
d21d: 60           RTS
d21e: a0 00        LDY #$00
d220: b1 10        LDA ($10),Y
d222: a8           TAY
d223: b9 00 05     LDA $0500,Y
d226: 9d 80 07     STA $0780,X
d229: b9 80 05     LDA $0580,Y
d22c: 9d 90 07     STA $0790,X
d22f: b9 00 06     LDA $0600,Y
d232: 9d a0 07     STA $07a0,X
d235: b9 80 06     LDA $0680,Y
d238: 9d b0 07     STA $07b0,X
d23b: b9 00 07     LDA $0700,Y
d23e: 9d c0 07     STA $07c0,X
d241: a5 10        LDA $10
d243: 18           CLC
d244: 69 40        ADC #$40
d246: 85 10        STA $10
d248: a5 11        LDA $11
d24a: 69 00        ADC #$00
d24c: 29 0f        AND #$0f
d24e: 09 70        ORA #$70
d250: 85 11        STA $11
d252: e8           INX
d253: e0 10        CPX #$10
d255: 90 c7        BCC +$c7  [$d21e]
d257: 60           RTS

d258: a2 00        LDX #$00
d25a: a5 2d        LDA $2d
d25c: 4a           LSR
d25d: 90 19        BCC +$19  [$d278]
d25f: a5 2c        LDA $2c
d261: 4a           LSR
d262: 66 12        ROR $12
d264: 4a           LSR
d265: 66 12        ROR $12
d267: 09 70        ORA #$70
d269: 85 11        STA $11
d26b: a5 12        LDA $12
d26d: 29 c0        AND #$c0
d26f: 85 12        STA $12
d271: 05 2b        ORA $2b
d273: 85 10        STA $10
d275: 4c e4 d1     JMP $d1e4
d278: a5 2c        LDA $2c
d27a: 29 0f        AND #$0f
d27c: 09 70        ORA #$70
d27e: 85 11        STA $11
d280: a5 2b        LDA $2b
d282: 85 10        STA $10
d284: a5 2d        LDA $2d
d286: 29 02        AND #$02
d288: d0 2b        BNE +$2b  [$d2b5]
d28a: a0 00        LDY #$00
d28c: b1 10        LDA ($10),Y
d28e: a8           TAY
d28f: b9 00 05     LDA $0500,Y
d292: 9d 80 07     STA $0780,X
d295: b9 80 05     LDA $0580,Y
d298: 9d 90 07     STA $0790,X
d29b: b9 00 06     LDA $0600,Y
d29e: 9d a0 07     STA $07a0,X
d2a1: b9 80 06     LDA $0680,Y
d2a4: 9d b0 07     STA $07b0,X
d2a7: b9 00 07     LDA $0700,Y
d2aa: 9d c0 07     STA $07c0,X
d2ad: e6 10        INC $10
d2af: e8           INX
d2b0: e0 10        CPX #$10
d2b2: 90 d6        BCC +$d6  [$d28a]
d2b4: 60           RTS
d2b5: a0 00        LDY #$00
d2b7: b1 10        LDA ($10),Y
d2b9: a8           TAY
d2ba: b9 00 05     LDA $0500,Y
d2bd: 9d 80 07     STA $0780,X
d2c0: b9 80 05     LDA $0580,Y
d2c3: 9d 90 07     STA $0790,X
d2c6: b9 00 06     LDA $0600,Y
d2c9: 9d a0 07     STA $07a0,X
d2cc: b9 80 06     LDA $0680,Y
d2cf: 9d b0 07     STA $07b0,X
d2d2: b9 00 07     LDA $0700,Y
d2d5: 9d c0 07     STA $07c0,X
d2d8: a5 11        LDA $11
d2da: 18           CLC
d2db: 69 01        ADC #$01
d2dd: 29 0f        AND #$0f
d2df: 09 70        ORA #$70
d2e1: 85 11        STA $11
d2e3: e8           INX
d2e4: e0 10        CPX #$10
d2e6: 90 cd        BCC +$cd  [$d2b5]
d2e8: 60           RTS
d2e9: a6 30        LDX $30
d2eb: bd e2 d5     LDA $d5e2,X
d2ee: 85 10        STA $10
d2f0: bd f2 d5     LDA $d5f2,X
d2f3: 85 11        STA $11
d2f5: a5 31        LDA $31
d2f7: c9 10        CMP #$10
d2f9: b0 09        BCS +$09  [$d304]
d2fb: aa           TAX
d2fc: 0a           ASL
d2fd: 05 10        ORA $10
d2ff: 85 10        STA $10
d301: 4c 13 d3     JMP $d313
d304: 29 0f        AND #$0f
d306: aa           TAX
d307: 0a           ASL
d308: 05 10        ORA $10
d30a: 85 10        STA $10
d30c: a5 11        LDA $11
d30e: 18           CLC
d30f: 69 04        ADC #$04
d311: 85 11        STA $11
d313: a5 2d        LDA $2d
d315: 29 02        AND #$02
d317: f0 03        BEQ +$03  [$d31c]
d319: 4c 8c d3     JMP $d38c
d31c: 8a           TXA
d31d: 49 0f        EOR #$0f
d31f: aa           TAX
d320: e8           INX
d321: 86 12        STX $12
d323: a0 00        LDY #$00
d325: ad 02 20     LDA $2002
d328: a5 11        LDA $11
d32a: 8d 06 20     STA $2006
d32d: a5 10        LDA $10
d32f: 8d 06 20     STA $2006
d332: b9 80 07     LDA $0780,Y
d335: 8d 07 20     STA $2007
d338: b9 90 07     LDA $0790,Y
d33b: 8d 07 20     STA $2007
d33e: c8           INY
d33f: ca           DEX
d340: d0 0e        BNE +$0e  [$d350]
d342: a5 11        LDA $11
d344: 49 04        EOR #$04
d346: 8d 06 20     STA $2006
d349: a5 10        LDA $10
d34b: 29 e0        AND #$e0
d34d: 8d 06 20     STA $2006
d350: c0 10        CPY #$10
d352: 90 de        BCC +$de  [$d332]
d354: a5 10        LDA $10
d356: 18           CLC
d357: 69 20        ADC #$20
d359: 85 10        STA $10
d35b: a5 11        LDA $11
d35d: 8d 06 20     STA $2006
d360: a5 10        LDA $10
d362: 8d 06 20     STA $2006
d365: a0 00        LDY #$00
d367: a6 12        LDX $12
d369: b9 a0 07     LDA $07a0,Y
d36c: 8d 07 20     STA $2007
d36f: b9 b0 07     LDA $07b0,Y
d372: 8d 07 20     STA $2007
d375: c8           INY
d376: ca           DEX
d377: d0 0e        BNE +$0e  [$d387]
d379: a5 11        LDA $11
d37b: 49 04        EOR #$04
d37d: 8d 06 20     STA $2006
d380: a5 10        LDA $10
d382: 29 e0        AND #$e0
d384: 8d 06 20     STA $2006
d387: c0 10        CPY #$10
d389: 90 de        BCC +$de  [$d369]
d38b: 60           RTS
d38c: a9 0f        LDA #$0f
d38e: 38           SEC
d38f: e5 30        SBC $30
d391: aa           TAX
d392: 86 12        STX $12
d394: a0 00        LDY #$00
d396: ad 02 20     LDA $2002
d399: a5 11        LDA $11
d39b: 8d 06 20     STA $2006
d39e: a5 10        LDA $10
d3a0: 8d 06 20     STA $2006
d3a3: a9 04        LDA #$04
d3a5: 8d 00 20     STA $2000
d3a8: b9 80 07     LDA $0780,Y
d3ab: 8d 07 20     STA $2007
d3ae: b9 a0 07     LDA $07a0,Y
d3b1: 8d 07 20     STA $2007
d3b4: ca           DEX
d3b5: d0 0e        BNE +$0e  [$d3c5]
d3b7: a5 11        LDA $11
d3b9: 29 24        AND #$24
d3bb: 8d 06 20     STA $2006
d3be: a5 10        LDA $10
d3c0: 29 1f        AND #$1f
d3c2: 8d 06 20     STA $2006
d3c5: c8           INY
d3c6: c0 0f        CPY #$0f
d3c8: 90 de        BCC +$de  [$d3a8]
d3ca: a0 00        LDY #$00
d3cc: a5 11        LDA $11
d3ce: 8d 06 20     STA $2006
d3d1: a5 10        LDA $10
d3d3: 18           CLC
d3d4: 69 01        ADC #$01
d3d6: 8d 06 20     STA $2006
d3d9: a6 12        LDX $12
d3db: b9 90 07     LDA $0790,Y
d3de: 8d 07 20     STA $2007
d3e1: b9 b0 07     LDA $07b0,Y
d3e4: 8d 07 20     STA $2007
d3e7: ca           DEX
d3e8: d0 11        BNE +$11  [$d3fb]
d3ea: a5 11        LDA $11
d3ec: 29 24        AND #$24
d3ee: 8d 06 20     STA $2006
d3f1: a5 10        LDA $10
d3f3: 18           CLC
d3f4: 69 01        ADC #$01
d3f6: 29 1f        AND #$1f
d3f8: 8d 06 20     STA $2006
d3fb: c8           INY
d3fc: c0 0f        CPY #$0f
d3fe: 90 db        BCC +$db  [$d3db]
d400: 60           RTS

; Something to do with updating the palette map
d401: a0 00        LDY #$00
d403: a5 30        LDA $30
d405: a2 0f        LDX #$0f
d407: 4a           LSR
d408: 90 02        BCC +$02  [$d40c]
d40a: a2 f0        LDX #$f0
d40c: 0a           ASL
d40d: 0a           ASL
d40e: 0a           ASL
d40f: 85 10        STA $10
d411: 86 11        STX $11
d413: a5 31        LDA $31
d415: a2 23        LDX #$23
d417: c9 10        CMP #$10
d419: 90 04        BCC +$04  [$d41f]
d41b: 29 0f        AND #$0f
d41d: a2 27        LDX #$27
d41f: 86 12        STX $12
d421: a2 33        LDX #$33
d423: 4a           LSR
d424: 90 02        BCC +$02  [$d428]
d426: a2 cc        LDX #$cc
d428: 05 10        ORA $10
d42a: 85 10        STA $10
d42c: 8a           TXA
d42d: 25 11        AND $11
d42f: 85 11        STA $11
d431: a5 12        LDA $12
d433: 99 d0 07     STA $07d0,Y
d436: a5 10        LDA $10
d438: 09 c0        ORA #$c0
d43a: 99 e0 07     STA $07e0,Y
d43d: a5 11        LDA $11
d43f: 99 f0 07     STA $07f0,Y
d442: a5 2d        LDA $2d
d444: 29 02        AND #$02
d446: d0 11        BNE +$11  [$d459]
d448: a5 31        LDA $31
d44a: 18           CLC
d44b: 69 01        ADC #$01
d44d: 29 1f        AND #$1f
d44f: 85 31        STA $31
d451: c8           INY
d452: c0 10        CPY #$10
d454: b0 18        BCS +$18  [$d46e]
d456: 4c 03 d4     JMP $d403
d459: a5 30        LDA $30
d45b: 18           CLC
d45c: 69 01        ADC #$01
d45e: c9 0f        CMP #$0f
d460: 90 02        BCC +$02  [$d464]
d462: e9 0f        SBC #$0f
d464: 85 30        STA $30
d466: c8           INY
d467: c0 0f        CPY #$0f
d469: b0 03        BCS +$03  [$d46e]
d46b: 4c 03 d4     JMP $d403
d46e: 60           RTS

d46f: a5 2d        LDA $2d
d471: a2 10        LDX #$10
d473: 29 02        AND #$02
d475: f0 02        BEQ +$02  [$d479]
d477: a2 0f        LDX #$0f
d479: 86 11        STX $11
d47b: a2 00        LDX #$00
d47d: ad 02 20     LDA $2002
d480: bd d0 07     LDA $07d0,X
d483: 8d 06 20     STA $2006
d486: bd e0 07     LDA $07e0,X
d489: 8d 06 20     STA $2006
d48c: ad 07 20     LDA $2007
d48f: ad 07 20     LDA $2007
d492: 85 10        STA $10
d494: 5d c0 07     EOR $07c0,X
d497: 3d f0 07     AND $07f0,X
d49a: 45 10        EOR $10
d49c: bc d0 07     LDY $07d0,X
d49f: 8c 06 20     STY $2006
d4a2: bc e0 07     LDY $07e0,X
d4a5: 8c 06 20     STY $2006
d4a8: 8d 07 20     STA $2007
d4ab: e8           INX
d4ac: e4 11        CPX $11
d4ae: 90 d0        BCC +$d0  [$d480]
d4b0: 60           RTS

d4b1: 48           PHA
d4b2: a9 07        LDA #$07
d4b4: 85 1c        STA $1c
d4b6: a5 2a        LDA $2a
d4b8: 18           CLC
d4b9: 69 07        ADC #$07
d4bb: 29 3f        AND #$3f
d4bd: 85 2c        STA $2c
d4bf: a5 2f        LDA $2f
d4c1: 18           CLC
d4c2: 69 07        ADC #$07
d4c4: c9 0f        CMP #$0f
d4c6: 90 02        BCC +$02  [$d4ca]
d4c8: e9 0f        SBC #$0f
d4ca: 85 30        STA $30
d4cc: a9 01        LDA #$01
d4ce: 85 2d        STA $2d
d4d0: a5 2c        LDA $2c
d4d2: 38           SEC
d4d3: e9 01        SBC #$01
d4d5: 29 3f        AND #$3f
d4d7: 85 2c        STA $2c
d4d9: a5 30        LDA $30
d4db: 38           SEC
d4dc: e9 01        SBC #$01
d4de: b0 02        BCS +$02  [$d4e2]
d4e0: 69 0f        ADC #$0f
d4e2: 85 30        STA $30
d4e4: a5 29        LDA $29
d4e6: 85 2b        STA $2b
d4e8: 29 1f        AND #$1f
d4ea: 49 10        EOR #$10
d4ec: 85 31        STA $31
d4ee: 20 58 d2     JSR $d258
d4f1: 20 49 d5     JSR $d549
d4f4: 20 00 fe     JSR $fe00   ; wait for V-blank
d4f7: 20 e9 d2     JSR $d2e9
d4fa: 20 a1 cc     JSR $cca1   ; Set scrolling for map?
d4fd: 20 81 c6     JSR $c681   ; Start music or play current notes, bank=13
d500: 20 01 d4     JSR $d401   ; Something to do with updating the palette map
d503: a5 30        LDA $30
d505: c5 2f        CMP $2f
d507: f0 03        BEQ +$03  [$d50c]
d509: 20 3e d5     JSR $d53e
d50c: 20 00 fe     JSR $fe00   ; wait for V-blank
d50f: 20 6f d4     JSR $d46f
d512: 20 a1 cc     JSR $cca1   ; Set scrolling for map?
d515: 20 81 c6     JSR $c681   ; Start music or play current notes, bank=13
d518: a5 30        LDA $30
d51a: c5 2f        CMP $2f
d51c: d0 b2        BNE +$b2  [$d4d0]
d51e: a5 29        LDA $29
d520: 18           CLC
d521: 69 12        ADC #$12
d523: 29 1f        AND #$1f
d525: 0a           ASL
d526: 85 38        STA $38
d528: a5 2f        LDA $2f
d52a: 0a           ASL
d52b: 18           CLC
d52c: 69 04        ADC #$04
d52e: c9 1e        CMP #$1e
d530: 90 02        BCC +$02  [$d534]
d532: e9 1e        SBC #$1e
d534: 85 39        STA $39
d536: a9 80        LDA #$80
d538: 85 37        STA $37
d53a: 68           PLA
d53b: 4c 64 db     JMP $db64

d53e: a2 0e        LDX #$0e
d540: a9 ff        LDA #$ff
d542: 9d c0 07     STA $07c0,X
d545: ca           DEX
d546: d0 fa        BNE +$fa  [$d542]
d548: 60           RTS

d549: c6 1c        DEC $1c
d54b: f0 4c        BEQ +$4c  [$d599]
d54d: a5 1c        LDA $1c
d54f: c9 06        CMP #$06
d551: f0 34        BEQ +$34  [$d587]
d553: c9 01        CMP #$01
d555: f0 18        BEQ +$18  [$d56f]
d557: a9 fa        LDA #$fa
d559: 85 10        STA $10
d55b: a9 ff        LDA #$ff
d55d: 85 11        STA $11
d55f: 20 9a d5     JSR $d59a
d562: a9 fb        LDA #$fb
d564: 85 10        STA $10
d566: 20 ac d5     JSR $d5ac
d569: 20 be d5     JSR $d5be
d56c: 4c d0 d5     JMP $d5d0
d56f: a9 f7        LDA #$f7
d571: 85 10        STA $10
d573: a9 f8        LDA #$f8
d575: 85 11        STA $11
d577: 20 9a d5     JSR $d59a
d57a: a9 f9        LDA #$f9
d57c: 85 10        STA $10
d57e: 20 ac d5     JSR $d5ac
d581: 20 be d5     JSR $d5be
d584: 4c d0 d5     JMP $d5d0
d587: a9 fc        LDA #$fc
d589: 85 10        STA $10
d58b: a9 fd        LDA #$fd
d58d: 85 11        STA $11
d58f: 20 9a d5     JSR $d59a
d592: a9 fe        LDA #$fe
d594: 85 10        STA $10
d596: 4c ac d5     JMP $d5ac
d599: 60           RTS
d59a: a5 10        LDA $10
d59c: 8d 81 07     STA $0781
d59f: a2 02        LDX #$02
d5a1: a5 11        LDA $11
d5a3: 9d 80 07     STA $0780,X
d5a6: e8           INX
d5a7: e0 0f        CPX #$0f
d5a9: 90 f8        BCC +$f8  [$d5a3]
d5ab: 60           RTS
d5ac: a5 11        LDA $11
d5ae: a2 01        LDX #$01
d5b0: 9d 90 07     STA $0790,X
d5b3: e8           INX
d5b4: e0 0e        CPX #$0e
d5b6: 90 f8        BCC +$f8  [$d5b0]
d5b8: a5 10        LDA $10
d5ba: 8d 9e 07     STA $079e
d5bd: 60           RTS
d5be: a9 fa        LDA #$fa
d5c0: 8d a1 07     STA $07a1
d5c3: a2 02        LDX #$02
d5c5: a9 ff        LDA #$ff
d5c7: 9d a0 07     STA $07a0,X
d5ca: e8           INX
d5cb: e0 0f        CPX #$0f
d5cd: 90 f8        BCC +$f8  [$d5c7]
d5cf: 60           RTS
d5d0: a9 ff        LDA #$ff
d5d2: a2 01        LDX #$01
d5d4: 9d b0 07     STA $07b0,X
d5d7: e8           INX
d5d8: e0 0e        CPX #$0e
d5da: 90 f8        BCC +$f8  [$d5d4]
d5dc: a9 fb        LDA #$fb
d5de: 8d be 07     STA $07be
d5e1: 60           RTS

d5e2: 00 40 80 c0 00 40 80 c0 00 40 80 c0 00 40 80 c0
d5f2: 20 20 20 20 21 21 21 21 22 22 22 22 23 23 23 23

; Roll in window, wait for button, and roll out window
d602: a9 03        LDA #$03
d604: 85 12        STA $12
d606: a9 35        LDA #$35
d608: 85 7e        STA $7e
d60a: a9 8e        LDA #$8e
d60c: 20 c7 d6     JSR $d6c7
d60f: a5 ff        LDA $ff
d611: 49 01        EOR #$01
d613: 85 1a        STA $1a
d615: a9 08        LDA #$08
d617: 85 1b        STA $1b
d619: 20 a1 d6     JSR $d6a1   ; Has to do with rolling in the window; sets sprite prio and handles swapping $2000 between $1a and $ff based on $1b.
d61c: a5 1b        LDA $1b
d61e: 18           CLC
d61f: 69 02        ADC #$02
d621: 85 1b        STA $1b
d623: c9 60        CMP #$60
d625: 90 f2        BCC +$f2  [$d619]
d627: a5 7d        LDA $7d
d629: f0 0a        BEQ +$0a  [$d635]
d62b: a2 54        LDX #$54
d62d: c9 01        CMP #$01
d62f: f0 02        BEQ +$02  [$d633]
d631: a2 58        LDX #$58
d633: 86 4b        STX $4b
d635: 20 a1 d6     JSR $d6a1   ; Has to do with rolling in the window; sets sprite prio and handles swapping $2000 between $1a and $ff based on $1b.
d638: 20 c2 d7     JSR $d7c2   ; Get button presses in $20-$25
d63b: a5 24        LDA $24
d63d: d0 32        BNE +$32  [$d671]
d63f: a5 4b        LDA $4b
d641: c9 81        CMP #$81
d643: d0 08        BNE +$08  [$d64d]
d645: a5 7c        LDA $7c
d647: 85 4b        STA $4b
d649: a9 00        LDA #$00
d64b: 85 7d        STA $7d
d64d: a5 20        LDA $20
d64f: 29 0f        AND #$0f
d651: d0 e2        BNE +$e2  [$d635]
d653: 20 a1 d6     JSR $d6a1   ; Has to do with rolling in the window; sets sprite prio and handles swapping $2000 between $1a and $ff based on $1b.
d656: 20 c2 d7     JSR $d7c2   ; Get button presses in $20-$25
d659: a5 24        LDA $24
d65b: d0 14        BNE +$14  [$d671]
d65d: a5 4b        LDA $4b
d65f: c9 81        CMP #$81
d661: d0 08        BNE +$08  [$d66b]
d663: a5 7c        LDA $7c
d665: 85 4b        STA $4b
d667: a9 00        LDA #$00
d669: 85 7d        STA $7d
d66b: a5 20        LDA $20
d66d: 29 0f        AND #$0f
d66f: f0 e2        BEQ +$e2  [$d653]
d671: a5 7d        LDA $7d
d673: f0 14        BEQ +$14  [$d689]
d675: a5 4b        LDA $4b
d677: c9 81        CMP #$81
d679: f0 06        BEQ +$06  [$d681]
d67b: 20 a1 d6     JSR $d6a1   ; Has to do with rolling in the window; sets sprite prio and handles swapping $2000 between $1a and $ff based on $1b.
d67e: 4c 75 d6     JMP $d675
d681: a5 7c        LDA $7c
d683: 85 4b        STA $4b
d685: a9 00        LDA #$00
d687: 85 7d        STA $7d
d689: a9 25        LDA #$25
d68b: 85 7e        STA $7e
d68d: a9 95        LDA #$95
d68f: 20 c7 d6     JSR $d6c7
d692: 20 a1 d6     JSR $d6a1   ; Has to do with rolling in the window; sets sprite prio and handles swapping $2000 between $1a and $ff based on $1b.
d695: a5 1b        LDA $1b
d697: 38           SEC
d698: e9 03        SBC #$03
d69a: 85 1b        STA $1b
d69c: c9 12        CMP #$12
d69e: b0 f2        BCS +$f2  [$d692]
d6a0: 60           RTS

; Has to do with rolling in the window; sets sprite prio and handles swapping $2000 between $1a and $ff based on $1b.
d6a1: 20 02 ff     JSR $ff02   ; Set priority of sprites, depending on Y pos (low if Y<$1b)
d6a4: a9 02        LDA #$02    ; Upload sprites
d6a6: 8d 14 40     STA $4014
d6a9: a5 1a        LDA $1a
d6ab: 8d 00 20     STA $2000
d6ae: a0 fc        LDY #$fc
d6b0: 88           DEY
d6b1: ea           NOP
d6b2: ea           NOP
d6b3: ea           NOP
d6b4: d0 fa        BNE +$fa  [$d6b0]
d6b6: a6 1b        LDX $1b
d6b8: ca           DEX
d6b9: 20 88 d7     JSR $d788   ; Some sort of delay loop?
d6bc: ca           DEX
d6bd: d0 fa        BNE +$fa  [$d6b9]
d6bf: a5 ff        LDA $ff
d6c1: 8d 00 20     STA $2000
d6c4: 4c 81 c6     JMP $c681   ; Start music or play current notes, bank=13

d6c7: a2 38        LDX #$38
d6c9: 8e 04 40     STX $4004
d6cc: 8d 05 40     STA $4005
d6cf: 4a           LSR
d6d0: 6a           ROR
d6d1: 49 ff        EOR #$ff
d6d3: 8d 06 40     STA $4006
d6d6: a9 00        LDA #$00
d6d8: 8d 07 40     STA $4007
d6db: 60           RTS

; Do open animation
d6dc: 20 9d d7     JSR $d79d   ; Clear and upload sprites, wait for V-blank, and some sound stuff
d6df: a9 85        LDA #$85
d6e1: 85 14        STA $14
d6e3: a9 01        LDA #$01
d6e5: 85 15        STA $15
d6e7: 20 42 d7     JSR $d742   ; Do the open/close animation ($14 specifies top and $15 specifies height?)
d6ea: a5 14        LDA $14
d6ec: 38           SEC
d6ed: e9 02        SBC #$02
d6ef: 85 14        STA $14
d6f1: a5 15        LDA $15
d6f3: 18           CLC
d6f4: 69 04        ADC #$04
d6f6: 85 15        STA $15
d6f8: c9 e0        CMP #$e0
d6fa: 90 eb        BCC +$eb  [$d6e7]
d6fc: a9 1e        LDA #$1e
d6fe: 4c 23 d7     JMP $d723

; Do close animation
d701: 20 9d d7     JSR $d79d   ; Clear and upload sprites, wait for V-blank, and some sound stuff
d704: a9 15        LDA #$15
d706: 85 14        STA $14
d708: a9 dd        LDA #$dd
d70a: 85 15        STA $15
d70c: 20 42 d7     JSR $d742   ; Do the open/close animation ($14 specifies top and $15 specifies height?)
d70f: a5 14        LDA $14
d711: 18           CLC
d712: 69 02        ADC #$02
d714: 85 14        STA $14
d716: a5 15        LDA $15
d718: 38           SEC
d719: e9 04        SBC #$04
d71b: 85 15        STA $15
d71d: c9 01        CMP #$01
d71f: d0 eb        BNE +$eb  [$d70c]
d721: a9 00        LDA #$00
d723: 8d 01 20     STA $2001
d726: a9 00        LDA #$00
d728: 8d 02 40     STA $4002
d72b: 8d 03 40     STA $4003
d72e: 60           RTS

; Upload sprites and palettes, and set scrolling(?)
d72f: a9 02        LDA #$02    ; Upload sprites
d731: 8d 14 40     STA $4014
d734: 20 62 d8     JSR $d862   ; Upload palettes: BG at $03e0, sprite at $03d0
d737: a5 2d        LDA $2d
d739: 4a           LSR
d73a: b0 03        BCS +$03  [$d73f]
d73c: 4c 4b c3     JMP $c34b   ; Set scrolling for world map?
d73f: 4c a1 cc     JMP $cca1   ; Set scrolling for map?

; Do the open/close animation ($14 specifies top and $15 specifies height?)
d742: 20 00 fe     JSR $fe00   ; wait for V-blank
d745: 20 2f d7     JSR $d72f   ; Upload sprites and palettes, and set scrolling(?)
d748: a2 0a        LDX #$0a
d74a: ca           DEX
d74b: d0 fd        BNE +$fd  [$d74a]
d74d: a9 10        LDA #$10
d74f: 8d 01 20     STA $2001
d752: a6 14        LDX $14
d754: 20 88 d7     JSR $d788   ; Some sort of delay loop?
d757: ca           DEX
d758: d0 fa        BNE +$fa  [$d754]
d75a: a9 1e        LDA #$1e
d75c: 8d 01 20     STA $2001
d75f: a6 15        LDX $15
d761: 20 88 d7     JSR $d788   ; Some sort of delay loop?
d764: ca           DEX
d765: d0 fa        BNE +$fa  [$d761]
d767: a9 10        LDA #$10
d769: 8d 01 20     STA $2001
d76c: a5 15        LDA $15
d76e: 29 0c        AND #$0c
d770: d0 15        BNE +$15  [$d787]
d772: a5 15        LDA $15
d774: 49 ff        EOR #$ff
d776: 0a           ASL
d777: 26 10        ROL $10
d779: 0a           ASL
d77a: 26 10        ROL $10
d77c: 0a           ASL
d77d: 8d 02 40     STA $4002
d780: 26 10        ROL $10
d782: a5 10        LDA $10
d784: 8d 03 40     STA $4003
d787: 60           RTS

; Some sort of delay loop?
d788: a0 10        LDY #$10
d78a: 88           DEY
d78b: d0 fd        BNE +$fd  [$d78a]
d78d: a5 12        LDA $12
d78f: c6 12        DEC $12
d791: d0 05        BNE +$05  [$d798]
d793: a9 03        LDA #$03
d795: 85 12        STA $12
d797: 60           RTS
d798: a9 00        LDA #$00
d79a: a5 12        LDA $12
d79c: 60           RTS

; Clear and upload sprites, wait for V-blank, and some sound stuff
d79d: a9 f8        LDA #$f8
d79f: a2 00        LDX #$00
d7a1: 9d 00 02     STA $0200,X
d7a4: e8           INX
d7a5: d0 fa        BNE +$fa  [$d7a1]
d7a7: 20 00 fe     JSR $fe00   ; wait for V-blank
d7aa: a9 02        LDA #$02    ; Upload sprites
d7ac: 8d 14 40     STA $4014
d7af: a9 01        LDA #$01
d7b1: 8d 15 40     STA $4015
d7b4: a9 38        LDA #$38
d7b6: 8d 00 40     STA $4000
d7b9: a9 8a        LDA #$8a
d7bb: 8d 01 40     STA $4001
d7be: 60           RTS

d7bf: 4c 81 c6     JMP $c681   ; Start music or play current notes, bank=13

; Get button presses: $20 = current, $21 = current buttons, but preserve L/R and U/D, $22-$25 = count of start/select/A/B
d7c2: 20 c9 d7     JSR $d7c9
d7c5: 20 e2 d7     JSR $d7e2
d7c8: 60           RTS
d7c9: a9 01        LDA #$01    ; get button presses into $20
d7cb: 8d 16 40     STA $4016
d7ce: a9 00        LDA #$00
d7d0: 8d 16 40     STA $4016
d7d3: a2 08        LDX #$08
d7d5: ad 16 40     LDA $4016
d7d8: 29 03        AND #$03
d7da: c9 01        CMP #$01
d7dc: 26 20        ROL $20
d7de: ca           DEX
d7df: d0 f4        BNE +$f4  [$d7d5]
d7e1: 60           RTS
d7e2: a5 20        LDA $20
d7e4: 29 03        AND #$03     ; if L/R, set bits 0-1 in $11. If U/D, set bits 2-3.
d7e6: f0 02        BEQ +$02  [$d7ea]
d7e8: a2 03        LDX #$03
d7ea: 86 11        STX $11
d7ec: a5 20        LDA $20
d7ee: 29 0c        AND #$0c
d7f0: f0 05        BEQ +$05  [$d7f7]
d7f2: 8a           TXA
d7f3: 09 0c        ORA #$0c
d7f5: 85 11        STA $11
d7f7: a5 20        LDA $20      ; update L/R in $21 if L/R pressed
d7f9: 45 21        EOR $21      ; and U/D in $21 if U/D pressed
d7fb: 25 11        AND $11
d7fd: 45 21        EOR $21
d7ff: 85 21        STA $21
d801: 45 20        EOR $20
d803: aa           TAX
d804: 29 10        AND #$10     ; start pressed or released? Inc $23 if pressed, and update $21
d806: f0 0e        BEQ +$0e  [$d816]
d808: a5 20        LDA $20
d80a: 29 10        AND #$10
d80c: f0 02        BEQ +$02  [$d810]
d80e: e6 23        INC $23
d810: a5 21        LDA $21
d812: 49 10        EOR #$10
d814: 85 21        STA $21
d816: 8a           TXA          ; select pressed or released? Inc $22 if pressed, and update $21
d817: 29 20        AND #$20
d819: f0 0e        BEQ +$0e  [$d829]
d81b: a5 20        LDA $20
d81d: 29 20        AND #$20
d81f: f0 02        BEQ +$02  [$d823]
d821: e6 22        INC $22
d823: a5 21        LDA $21
d825: 49 20        EOR #$20
d827: 85 21        STA $21
d829: 8a           TXA          ; B pressed or released? Inc $25 if pressed, and update $21
d82a: 29 40        AND #$40
d82c: f0 0e        BEQ +$0e  [$d83c]
d82e: a5 20        LDA $20
d830: 29 40        AND #$40
d832: f0 02        BEQ +$02  [$d836]
d834: e6 25        INC $25
d836: a5 21        LDA $21
d838: 49 40        EOR #$40
d83a: 85 21        STA $21
d83c: 8a           TXA          ; A pressed or released? Inc $24 is pressed, and update $21
d83d: 29 80        AND #$80
d83f: f0 0e        BEQ +$0e  [$d84f]
d841: a5 20        LDA $20
d843: 29 80        AND #$80
d845: f0 02        BEQ +$02  [$d849]
d847: e6 24        INC $24
d849: a5 21        LDA $21
d84b: 49 80        EOR #$80
d84d: 85 21        STA $21
d84f: 60           RTS

; Upload palettes: BG at $03c0, sprite at $03d0
d850: ad 02 20     LDA $2002   ; clear v-blank flag
d853: a9 3f        LDA #$3f    ; VRAM address point to palettes
d855: 8d 06 20     STA $2006
d858: a9 00        LDA #$00
d85a: 8d 06 20     STA $2006
d85d: a2 00        LDX #$00
d85f: 4c 80 d8     JMP $d880

; Upload palettes: BG at $03e0, sprite at $03d0
d862: ad 02 20     LDA $2002   ; clear v-blank flag
d865: a9 3f        LDA #$3f
d867: 8d 06 20     STA $2006
d86a: a9 00        LDA #$00
d86c: 8d 06 20     STA $2006
d86f: a2 00        LDX #$00
d871: a5 0d        LDA $0d
d873: f0 0b        BEQ +$0b  [$d880]
d875: bd e0 03     LDA $03e0,X
d878: 8d 07 20     STA $2007
d87b: e8           INX
d87c: e0 10        CPX #$10
d87e: 90 f5        BCC +$f5  [$d875]

d880: bd c0 03     LDA $03c0,X   ; upload palettes to VRAM
d883: 8d 07 20     STA $2007
d886: e8           INX
d887: e0 20        CPX #$20
d889: 90 f5        BCC +$f5  [$d880]
d88b: ad 02 20     LDA $2002     ; clear v-blank flag
d88e: a9 3f        LDA #$3f      ; reset vram address?
d890: 8d 06 20     STA $2006
d893: a9 00        LDA #$00
d895: 8d 06 20     STA $2006
d898: 8d 06 20     STA $2006
d89b: 8d 06 20     STA $2006
d89e: 60           RTS

; Clear and upload sprites
d89f: 20 3c c4     JSR $c43c   ; Clear sprites
d8a2: 20 00 fe     JSR $fe00   ; wait for V-blank
d8a5: a9 02        LDA #$02    ; upload sprites
d8a7: 8d 14 40     STA $4014
d8aa: 60           RTS

; Copy map palettes into position
d8ab: a2 2f        LDX #$2f
d8ad: bd 80 07     LDA $0780,X
d8b0: 9d c0 03     STA $03c0,X
d8b3: ca           DEX
d8b4: 10 f7        BPL +$f7  [$d8ad]
d8b6: a9 00        LDA #$00
d8b8: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
d8bb: ad 00 61     LDA $6100
d8be: 0a           ASL
d8bf: aa           TAX
d8c0: bd a0 83     LDA $83a0,X
d8c3: 8d d2 03     STA $03d2
d8c6: bd a1 83     LDA $83a1,X
d8c9: 8d d6 03     STA $03d6
d8cc: 60           RTS

; Do battle entry flashing, then BG off and clear sprites
d8cd: a9 08        LDA #$08
d8cf: 8d 15 40     STA $4015
d8d2: a9 00        LDA #$00
d8d4: 85 1c        STA $1c
d8d6: 20 00 fe     JSR $fe00   ;; Do flashing for battle ; wait for V-blank
d8d9: a5 2d        LDA $2d
d8db: 4a           LSR
d8dc: 90 06        BCC +$06  [$d8e4]
d8de: 20 a1 cc     JSR $cca1   ; Set scrolling for map?
d8e1: 4c e7 d8     JMP $d8e7
d8e4: 20 46 c3     JSR $c346   ; Enable display and set scrolling for world map?
d8e7: a5 1c        LDA $1c
d8e9: 0a           ASL
d8ea: 0a           ASL
d8eb: 0a           ASL
d8ec: 29 e0        AND #$e0
d8ee: 09 0a        ORA #$0a
d8f0: 8d 01 20     STA $2001
d8f3: a9 0f        LDA #$0f
d8f5: 8d 0c 40     STA $400c
d8f8: a5 1c        LDA $1c
d8fa: 4a           LSR
d8fb: 09 03        ORA #$03
d8fd: 8d 0e 40     STA $400e
d900: a9 00        LDA #$00
d902: 8d 0f 40     STA $400f
d905: e6 1c        INC $1c
d907: a5 1c        LDA $1c
d909: c9 41        CMP #$41
d90b: 90 c9        BCC +$c9  [$d8d6]
d90d: a9 00        LDA #$00
d90f: 8d 01 20     STA $2001
d912: 8d 15 40     STA $4015
d915: 4c 9f d8     JMP $d89f   ; Clear and upload sprites

; Upload 03f0 to palette
d918: ad 02 20     LDA $2002
d91b: a2 00        LDX #$00
d91d: a9 3f        LDA #$3f
d91f: 8d 06 20     STA $2006
d922: a9 00        LDA #$00
d924: 8d 06 20     STA $2006
d927: bd f0 03     LDA $03f0,X
d92a: 8d 07 20     STA $2007
d92d: e8           INX
d92e: e0 10        CPX #$10
d930: 90 f5        BCC +$f5  [$d927]
d932: ad 02 20     LDA $2002
d935: a9 3f        LDA #$3f
d937: 8d 06 20     STA $2006
d93a: a9 00        LDA #$00
d93c: 8d 06 20     STA $2006
d93f: 8d 06 20     STA $2006
d942: 8d 06 20     STA $2006
d945: 60           RTS

; Do palette cycle: A.1 selects palette (reg/room), A.0 selects direction (to/from black)
d946: 85 1c        STA $1c
d948: 20 9f d8     JSR $d89f   ; Clear and upload sprites
d94b: 20 82 d9     JSR $d982   ; $1c: 4 -> BG on, no scroll; 2 -> BG on, scroll map; else -> BG on, scroll world map
d94e: 20 b3 d9     JSR $d9b3   ; 03f0-f = BG palette (room if $1c.1 and $0d set, reg otherwise), and non-black=blue if bit 0
d951: a9 01        LDA #$01
d953: 48           PHA
d954: 29 03        AND #$03
d956: d0 07        BNE +$07  [$d95f]
d958: 20 ef d9     JSR $d9ef   ; If $1c.0 clear, cycle 0370 up towards black, otherwise down to palette
d95b: c0 00        CPY #$00
d95d: f0 13        BEQ +$13  [$d972]
d95f: 20 00 fe     JSR $fe00   ; wait for V-blank
d962: 20 18 d9     JSR $d918   ; Upload 03f0 to palette
d965: 20 82 d9     JSR $d982   ; $1c: 4 -> BG on, no scroll; 2 -> BG on, scroll map; else -> BG on, scroll world map
d968: 20 81 c6     JSR $c681   ; Start music or play current notes, bank=13
d96b: 68           PLA
d96c: 18           CLC
d96d: 69 01        ADC #$01
d96f: 4c 53 d9     JMP $d953
d972: 68           PLA
d973: a5 1c        LDA $1c
d975: 4a           LSR
d976: b0 05        BCS +$05  [$d97d]
d978: a9 00        LDA #$00
d97a: 8d 01 20     STA $2001
d97d: a9 0e        LDA #$0e
d97f: 4c 03 fe     JMP $fe03  ; Show Bank in A in memory locations $8000-$bfff 

; $1c: 4 -> BG on, no scroll; 2 -> BG on, scroll map; else -> BG on, scroll world map
d982: a5 1c        LDA $1c
d984: 29 04        AND #$04
d986: f0 13        BEQ +$13  [$d99b]
d988: a5 ff        LDA $ff
d98a: 8d 00 20     STA $2000
d98d: a9 0a        LDA #$0a
d98f: 8d 01 20     STA $2001
d992: a9 00        LDA #$00
d994: 8d 05 20     STA $2005
d997: 8d 05 20     STA $2005
d99a: 60           RTS
d99b: a5 1c        LDA $1c
d99d: 29 02        AND #$02
d99f: d0 09        BNE +$09  [$d9aa]
d9a1: 20 46 c3     JSR $c346   ; Enable display and set scrolling for world map?
d9a4: a9 0a        LDA #$0a
d9a6: 8d 01 20     STA $2001
d9a9: 60           RTS
d9aa: 20 a1 cc     JSR $cca1   ; Set scrolling for map?
d9ad: a9 0a        LDA #$0a
d9af: 8d 01 20     STA $2001
d9b2: 60           RTS

; 03f0-f = BG palette (room if $1c.1 and $0d set, reg otherwise), and non-black=blue if bit 0 set
d9b3: a2 00        LDX #$00
d9b5: a5 1c        LDA $1c
d9b7: 4a           LSR
d9b8: 90 16        BCC +$16  [$d9d0]
d9ba: 20 d0 d9     JSR $d9d0
d9bd: ca           DEX
d9be: bd f0 03     LDA $03f0,X
d9c1: c9 0f        CMP #$0f
d9c3: f0 07        BEQ +$07  [$d9cc]
d9c5: 29 30        AND #$30
d9c7: 09 0c        ORA #$0c
d9c9: 9d f0 03     STA $03f0,X
d9cc: ca           DEX
d9cd: 10 ef        BPL +$ef  [$d9be]
d9cf: 60           RTS
d9d0: 4a           LSR
d9d1: 90 10        BCC +$10  [$d9e3]
d9d3: a5 0d        LDA $0d
d9d5: f0 0c        BEQ +$0c  [$d9e3]
d9d7: bd e0 03     LDA $03e0,X
d9da: 9d f0 03     STA $03f0,X
d9dd: e8           INX
d9de: e0 10        CPX #$10
d9e0: 90 f5        BCC +$f5  [$d9d7]
d9e2: 60           RTS
d9e3: bd c0 03     LDA $03c0,X
d9e6: 9d f0 03     STA $03f0,X
d9e9: e8           INX
d9ea: e0 10        CPX #$10
d9ec: 90 f5        BCC +$f5  [$d9e3]
d9ee: 60           RTS

; If $1c.0 clear, cycle 0370 up towards black, otherwise down to palette
d9ef: a0 00        LDY #$00
d9f1: a2 00        LDX #$00
d9f3: a5 1c        LDA $1c
d9f5: 4a           LSR
d9f6: b0 25        BCS +$25  [$da1d]
d9f8: bd f0 03     LDA $03f0,X
d9fb: c9 0f        CMP #$0f
d9fd: f0 18        BEQ +$18  [$da17]
d9ff: 29 30        AND #$30
da01: 85 10        STA $10
da03: bd f0 03     LDA $03f0,X
da06: 29 0f        AND #$0f
da08: 18           CLC
da09: 69 01        ADC #$01
da0b: c9 0d        CMP #$0d
da0d: 05 10        ORA $10
da0f: 90 02        BCC +$02  [$da13]
da11: a9 0f        LDA #$0f
da13: 9d f0 03     STA $03f0,X
da16: c8           INY
da17: e8           INX
da18: e0 10        CPX #$10
da1a: d0 dc        BNE +$dc  [$d9f8]
da1c: 60           RTS
da1d: 4a           LSR
da1e: 90 19        BCC +$19  [$da39]
da20: a5 0d        LDA $0d
da22: f0 15        BEQ +$15  [$da39]
da24: bd f0 03     LDA $03f0,X
da27: dd e0 03     CMP $03e0,X
da2a: f0 07        BEQ +$07  [$da33]
da2c: 38           SEC
da2d: e9 01        SBC #$01
da2f: 9d f0 03     STA $03f0,X
da32: c8           INY
da33: e8           INX
da34: e0 10        CPX #$10
da36: 90 ec        BCC +$ec  [$da24]
da38: 60           RTS
da39: bd f0 03     LDA $03f0,X
da3c: dd c0 03     CMP $03c0,X
da3f: f0 07        BEQ +$07  [$da48]
da41: 38           SEC
da42: e9 01        SBC #$01
da44: 9d f0 03     STA $03f0,X
da47: c8           INY
da48: e8           INX
da49: e0 10        CPX #$10
da4b: 90 ec        BCC +$ec  [$da39]
da4d: 60           RTS

; Do screen shaking (i.e. when getting an orb)?
da4e: a5 29        LDA $29
da50: 0a           ASL
da51: 0a           ASL
da52: 0a           ASL
da53: 0a           ASL
da54: 85 1f        STA $1f
da56: a5 fd        LDA $fd
da58: 85 ff        STA $ff
da5a: a9 00        LDA #$00
da5c: 85 12        STA $12
da5e: 85 6c        STA $6c
da60: a9 8a        LDA #$8a
da62: 85 10        STA $10
da64: a9 02        LDA #$02
da66: 85 11        STA $11
da68: a9 30        LDA #$30
da6a: 8d 0c 40     STA $400c
da6d: 8d 04 40     STA $4004
da70: 8d 00 40     STA $4000
da73: 8d 08 40     STA $4008
da76: a9 0e        LDA #$0e
da78: 8d 0e 40     STA $400e
da7b: a9 00        LDA #$00
da7d: 8d 0f 40     STA $400f
da80: 8d 06 40     STA $4006
da83: a9 05        LDA #$05
da85: 8d 07 40     STA $4007
da88: ad 02 20     LDA $2002
da8b: 20 de da     JSR $dade
da8e: a6 10        LDX $10
da90: 20 00 db     JSR $db00
da93: ca           DEX
da94: d0 fa        BNE +$fa  [$da90]
da96: a6 11        LDX $11
da98: 20 0b db     JSR $db0b
da9b: ca           DEX
da9c: d0 fa        BNE +$fa  [$da98]
da9e: a5 12        LDA $12
daa0: d0 19        BNE +$19  [$dabb]
daa2: a5 11        LDA $11
daa4: 18           CLC
daa5: 69 02        ADC #$02
daa7: 85 11        STA $11
daa9: a5 10        LDA $10
daab: 38           SEC
daac: e9 02        SBC #$02
daae: 85 10        STA $10
dab0: c9 20        CMP #$20
dab2: b0 d7        BCS +$d7  [$da8b]
dab4: a9 01        LDA #$01
dab6: 85 12        STA $12
dab8: 4c 8b da     JMP $da8b
dabb: a5 11        LDA $11
dabd: 38           SEC
dabe: e9 02        SBC #$02
dac0: 85 11        STA $11
dac2: c9 08        CMP #$08
dac4: b0 c5        BCS +$c5  [$da8b]
dac6: ad d2 07     LDA $07d2
dac9: a5 1f        LDA $1f
dacb: 8d 05 20     STA $2005
dace: a9 00        LDA #$00
dad0: 8d 07 40     STA $4007
dad3: 8d 0c 40     STA $400c
dad6: 8d 04 40     STA $4004
dad9: a9 01        LDA #$01
dadb: 85 7e        STA $7e
dadd: 60           RTS

dade: a5 11        LDA $11
dae0: 4a           LSR
dae1: 4a           LSR
dae2: 4a           LSR
dae3: 09 30        ORA #$30
dae5: 8d 0c 40     STA $400c
dae8: 8d 04 40     STA $4004
daeb: 29 01        AND #$01
daed: 45 1f        EOR $1f
daef: 8d 05 20     STA $2005
daf2: 20 00 fe     JSR $fe00   ; wait for V-blank
daf5: a9 02        LDA #$02    ; upload sprites
daf7: 8d 14 40     STA $4014
dafa: a0 06        LDY #$06
dafc: 88           DEY
dafd: d0 fd        BNE +$fd  [$dafc]
daff: 60           RTS

db00: a0 12        LDY #$12
db02: 88           DEY
db03: d0 fd        BNE +$fd  [$db02]
db05: ea           NOP
db06: ea           NOP
db07: ea           NOP
db08: 60           RTS

db09: ea           NOP
db0a: ea           NOP
db0b: a0 0a        LDY #$0a
db0d: 88           DEY
db0e: d0 fd        BNE +$fd  [$db0d]
db10: a9 1f        LDA #$1f
db12: 8d 01 20     STA $2001
db15: a0 1e        LDY #$1e
db17: ea           NOP
db18: ea           NOP
db19: 20 25 db     JSR $db25
db1c: 20 25 db     JSR $db25
db1f: ea           NOP
db20: ea           NOP
db21: ea           NOP
db22: 8c 01 20     STY $2001
db25: 60           RTS

; "can't do that" buzz?
db26: a9 01        LDA #$01
db28: 85 7e        STA $7e
db2a: a9 30        LDA #$30
db2c: 8d 00 40     STA $4000
db2f: 8d 08 40     STA $4008
db32: 8d 0c 40     STA $400c
db35: a0 0f        LDY #$0f
db37: 20 48 db     JSR $db48
db3a: 88           DEY
db3b: 10 fa        BPL +$fa  [$db37]
db3d: a9 30        LDA #$30
db3f: 8d 04 40     STA $4004
db42: a9 00        LDA #$00
db44: 8d 06 40     STA $4006
db47: 60           RTS

db48: 20 00 fe     JSR $fe00   ; wait for V-blank
db4b: a9 8c        LDA #$8c
db4d: 8d 04 40     STA $4004
db50: a9 89        LDA #$89
db52: 8d 05 40     STA $4005
db55: a9 80        LDA #$80
db57: 8d 06 40     STA $4006
db5a: a9 00        LDA #$00
db5c: 8d 07 40     STA $4007
db5f: 60           RTS

db60: 20 a1 cc     JSR $cca1   ; Set scrolling for map?
db63: 60           RTS

db64: aa           TAX
db65: a9 0a        LDA #$0a
db67: 85 57        STA $57
db69: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
db6c: 8a           TXA
db6d: 0a           ASL
db6e: aa           TAX
db6f: b0 0d        BCS +$0d  [$db7e]
db71: bd 00 80     LDA $8000,X
db74: 85 3e        STA $3e
db76: bd 01 80     LDA $8001,X
db79: 85 3f        STA $3f
db7b: 4c 88 db     JMP $db88
db7e: bd 00 81     LDA $8100,X
db81: 85 3e        STA $3e
db83: bd 01 81     LDA $8101,X
db86: 85 3f        STA $3f
db88: a9 0a        LDA #$0a
db8a: 85 17        STA $17
db8c: 20 00 fe     JSR $fe00   ; wait for V-blank
db8f: a5 38        LDA $38
db91: 85 3a        STA $3a
db93: a5 39        LDA $39
db95: 85 3b        STA $3b
db97: 20 80 dc     JSR $dc80   ; Set VRAM address for tile ($3a,$3b) in the 64x30 tile screen
db9a: a0 00        LDY #$00
db9c: b1 3e        LDA ($3e),Y
db9e: f0 c0        BEQ +$c0  [$db60]
dba0: e6 3e        INC $3e
dba2: d0 02        BNE +$02  [$dba6]
dba4: e6 3f        INC $3f
dba6: c9 1a        CMP #$1a
dba8: 90 4a        BCC +$4a  [$dbf4]
dbaa: c9 7a        CMP #$7a
dbac: 90 16        BCC +$16  [$dbc4]
dbae: 8d 07 20     STA $2007
dbb1: a5 3a        LDA $3a
dbb3: 18           CLC
dbb4: 69 01        ADC #$01
dbb6: 29 3f        AND #$3f
dbb8: 85 3a        STA $3a
dbba: 29 1f        AND #$1f
dbbc: d0 dc        BNE +$dc  [$db9a]
dbbe: 20 80 dc     JSR $dc80   ; Set VRAM address for tile ($3a,$3b) in the 64x30 tile screen
dbc1: 4c 9a db     JMP $db9a
dbc4: 38           SEC
dbc5: e9 1a        SBC #$1a
dbc7: aa           TAX
dbc8: 48           PHA
dbc9: bd a0 f0     LDA $f0a0,X
dbcc: 8d 07 20     STA $2007
dbcf: 20 4e dc     JSR $dc4e
dbd2: 68           PLA
dbd3: aa           TAX
dbd4: bd 50 f0     LDA $f050,X
dbd7: 8d 07 20     STA $2007
dbda: 20 4e dc     JSR $dc4e
dbdd: c6 17        DEC $17
dbdf: d0 b9        BNE +$b9  [$db9a]
dbe1: 20 a1 cc     JSR $cca1   ; Set scrolling for map?
dbe4: 20 89 c6     JSR $c689   ; Start music or play current notes
dbe7: 20 00 fe     JSR $fe00   ; wait for V-blank
dbea: a9 0a        LDA #$0a
dbec: 85 17        STA $17
dbee: 20 80 dc     JSR $dc80   ; Set VRAM address for tile ($3a,$3b) in the 64x30 tile screen
dbf1: 4c 9a db     JMP $db9a
dbf4: c9 03        CMP #$03
dbf6: d0 1f        BNE +$1f  [$dc17]
dbf8: ad 02 61     LDA $6102
dbfb: 85 5c        STA $5c
dbfd: ad 03 61     LDA $6103
dc00: 85 5d        STA $5d
dc02: ad 04 61     LDA $6104
dc05: 85 5e        STA $5e
dc07: ad 05 61     LDA $6105
dc0a: 85 5f        STA $5f
dc0c: a9 5c        LDA #$5c
dc0e: 85 3e        STA $3e
dc10: a9 00        LDA #$00
dc12: 85 3f        STA $3f
dc14: 4c 9a db     JMP $db9a
dc17: c9 02        CMP #$02
dc19: d0 2d        BNE +$2d  [$dc48]
dc1b: a5 3e        LDA $3e
dc1d: 48           PHA
dc1e: a5 3f        LDA $3f
dc20: 48           PHA
dc21: a5 61        LDA $61
dc23: 0a           ASL
dc24: aa           TAX
dc25: b0 0b        BCS +$0b  [$dc32]
dc27: bd 00 b7     LDA $b700,X
dc2a: 85 3e        STA $3e
dc2c: bd 01 b7     LDA $b701,X
dc2f: 4c 3a dc     JMP $dc3a
dc32: bd 00 b8     LDA $b800,X
dc35: 85 3e        STA $3e
dc37: bd 01 b8     LDA $b801,X
dc3a: 85 3f        STA $3f
dc3c: 20 9a db     JSR $db9a
dc3f: 68           PLA
dc40: 85 3f        STA $3f
dc42: 68           PLA
dc43: 85 3e        STA $3e
dc45: 4c 9a db     JMP $db9a
dc48: 20 5f dc     JSR $dc5f
dc4b: 4c 9a db     JMP $db9a
dc4e: a5 3a        LDA $3a
dc50: 18           CLC
dc51: 69 01        ADC #$01
dc53: 29 3f        AND #$3f
dc55: 85 3a        STA $3a
dc57: 29 1f        AND #$1f
dc59: d0 03        BNE +$03  [$dc5e]
dc5b: 4c 80 dc     JMP $dc80   ; Set VRAM address for tile ($3a,$3b) in the 64x30 tile screen
dc5e: 60           RTS
dc5f: 20 a1 cc     JSR $cca1   ; Set scrolling for map?
dc62: 20 89 c6     JSR $c689   ; Start music or play current notes
dc65: a9 08        LDA #$08
dc67: 85 17        STA $17
dc69: 20 00 fe     JSR $fe00   ; wait for V-blank
dc6c: a5 38        LDA $38
dc6e: 85 3a        STA $3a
dc70: a5 3b        LDA $3b
dc72: 18           CLC
dc73: 69 01        ADC #$01
dc75: c9 1e        CMP #$1e
dc77: 90 02        BCC +$02  [$dc7b]
dc79: e9 1e        SBC #$1e
dc7b: 85 3b        STA $3b
dc7d: 4c 80 dc     JMP $dc80   ; Set VRAM address for tile ($3a,$3b) in the 64x30 tile screen

; Set VRAM address for tile ($3a,$3b) in the 64x30 tile screen
dc80: ad 02 20     LDA $2002
dc83: a6 3a        LDX $3a
dc85: a4 3b        LDY $3b
dc87: e0 20        CPX #$20
dc89: b0 0e        BCS +$0e  [$dc99]
dc8b: b9 14 dd     LDA $dd14,Y
dc8e: 8d 06 20     STA $2006
dc91: 8a           TXA
dc92: 19 f4 dc     ORA $dcf4,Y
dc95: 8d 06 20     STA $2006
dc98: 60           RTS
dc99: b9 14 dd     LDA $dd14,Y
dc9c: 09 04        ORA #$04
dc9e: 8d 06 20     STA $2006
dca1: 8a           TXA
dca2: 29 1f        AND #$1f
dca4: 19 f4 dc     ORA $dcf4,Y
dca7: 8d 06 20     STA $2006
dcaa: 60           RTS

; Set p[$54] to the tile ($3a,$3b) in the 32x30 screen
dcab: a6 3b        LDX $3b
dcad: a5 3a        LDA $3a
dcaf: 29 1f        AND #$1f
dcb1: 1d f4 dc     ORA $dcf4,X
dcb4: 85 54        STA $54
dcb6: bd 14 dd     LDA $dd14,X
dcb9: 85 55        STA $55
dcbb: 60           RTS

; Copy a $3c by $3d square from p[$3e] to VRAM at ($3a,$3b), adding $12 to all non-zero tiles
dcbc: 20 ab dc     JSR $dcab   ; Set p[$54] to the tile ($3a,$3b) in the 32x30 screen
dcbf: a0 00        LDY #$00
dcc1: a5 3d        LDA $3d
dcc3: 85 10        STA $10
dcc5: ad 02 20     LDA $2002   ; clear v-blank flag
dcc8: a5 55        LDA $55     ; VRAM address = p[$54]
dcca: 8d 06 20     STA $2006
dccd: a5 54        LDA $54
dccf: 8d 06 20     STA $2006
dcd2: a6 3c        LDX $3c
dcd4: b1 3e        LDA ($3e),Y
dcd6: f0 03        BEQ +$03  [$dcdb]
dcd8: 18           CLC
dcd9: 65 12        ADC $12
dcdb: 8d 07 20     STA $2007
dcde: c8           INY
dcdf: ca           DEX
dce0: d0 f2        BNE +$f2  [$dcd4]
dce2: a5 54        LDA $54
dce4: 18           CLC
dce5: 69 20        ADC #$20
dce7: 85 54        STA $54
dce9: a5 55        LDA $55
dceb: 69 00        ADC #$00
dced: 85 55        STA $55
dcef: c6 10        DEC $10
dcf1: d0 d2        BNE +$d2  [$dcc5]
dcf3: 60           RTS

; Start of each row of tiles in VRAM, low byte
dcf4: 00 20 40 60 80 a0 c0 e0 00 20 40 60 80 a0 c0 e0
dd04: 00 20 40 60 80 a0 c0 e0 00 20 40 60 80 a0 c0 e0
; Start of each row of tiles in VRAM, high byte
dd14: 20 20 20 20 20 20 20 20 21 21 21 21 21 21 21 21
dd24: 22 22 22 22 22 22 22 22 23 23 23 23 23 23 23 23

; X = first open weapon slot, C set if none
dd34: a0 00        LDY #$00
dd36: be 58 dd     LDX $dd58,Y
dd39: bd 00 61     LDA $6100,X
dd3c: f0 06        BEQ +$06  [$dd44]
dd3e: c8           INY
dd3f: c0 10        CPY #$10
dd41: 90 f3        BCC +$f3  [$dd36]
dd43: 60           RTS
dd44: 18           CLC
dd45: 60           RTS

; X = first open armor slot, C set if none
dd46: a0 00        LDY #$00
dd48: be 68 dd     LDX $dd68,Y
dd4b: bd 00 61     LDA $6100,X
dd4e: f0 06        BEQ +$06  [$dd56]
dd50: c8           INY
dd51: c0 10        CPY #$10
dd53: 90 f3        BCC +$f3  [$dd48]
dd55: 60           RTS
dd56: 18           CLC
dd57: 60           RTS

; offsets from $6100 of player weapons
dd58: 18 19 1a 1b 58 59 5a 5b 98 99 9a 9b d8 d9 da db
; offsets from $6100 of player armor
dd68: 1c 1d 1e 1f 5c 5d 5e 5f 9c 9d 9e 9f dc dd de df

; Open treasure chest in $45
dd78: a9 00        LDA #$00
dd7a: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
dd7d: a6 45        LDX $45
dd7f: bd 00 b1     LDA $b100,X
dd82: 85 61        STA $61
dd84: c9 1c        CMP #$1c
dd86: b0 22        BCS +$22  [$ddaa]
dd88: aa           TAX          ;; give item
dd89: bd 20 60     LDA $6020,X
dd8c: c9 63        CMP #$63
dd8e: b0 03        BCS +$03  [$dd93]
dd90: fe 20 60     INC $6020,X
dd93: a6 45        LDX $45      ; mark taken
dd95: bd 00 62     LDA $6200,X
dd98: 09 04        ORA #$04
dd9a: 9d 00 62     STA $6200,X
dd9d: a5 61        LDA $61
dd9f: c9 16        CMP #$16     ; select music (<$16 is plot item)
dda1: 90 02        BCC +$02  [$dda5]
dda3: e6 7d        INC $7d
dda5: e6 7d        INC $7d
dda7: a9 f0        LDA #$f0     ; message?
dda9: 60           RTS
ddaa: c9 44        CMP #$44
ddac: b0 23        BCS +$23  [$ddd1]
ddae: 38           SEC          ;; Give weapon
ddaf: e9 1b        SBC #$1b
ddb1: 85 10        STA $10
ddb3: 20 34 dd     JSR $dd34   ; X = first open weapon slot, C set if none
ddb6: b0 16        BCS +$16  [$ddce]
ddb8: a5 10        LDA $10
ddba: 9d 00 61     STA $6100,X
ddbd: a6 45        LDX $45
ddbf: bd 00 62     LDA $6200,X
ddc2: 09 04        ORA #$04
ddc4: 9d 00 62     STA $6200,X
ddc7: e6 7d        INC $7d
ddc9: e6 7d        INC $7d
ddcb: a9 f0        LDA #$f0     ; message?
ddcd: 60           RTS
ddce: a9 f1        LDA #$f1     ; "can't carry more" message?
ddd0: 60           RTS
ddd1: c9 6c        CMP #$6c
ddd3: b0 0c        BCS +$0c  [$dde1]
ddd5: 38           SEC          ;; give armor
ddd6: e9 43        SBC #$43
ddd8: 85 10        STA $10
ddda: 20 46 dd     JSR $dd46   ; X = first open armor slot, C set if none
dddd: b0 ef        BCS +$ef  [$ddce] ; "can't carry more"?
dddf: 90 d7        BCC +$d7  [$ddb8] ; give it and such
dde1: 20 b9 ec     JSR $ecb9   ;; give gold
dde4: 20 ea dd     JSR $ddea   ; Add 3-byte word in $10-12 into gold
dde7: 4c bd dd     JMP $ddbd   ; mark taken

; Add 3-byte word in $10-12 into gold
ddea: ad 1c 60     LDA $601c
dded: 18           CLC
ddee: 65 10        ADC $10
ddf0: 8d 1c 60     STA $601c
ddf3: ad 1d 60     LDA $601d
ddf6: 65 11        ADC $11
ddf8: 8d 1d 60     STA $601d
ddfb: ad 1e 60     LDA $601e
ddfe: 65 12        ADC $12
de00: 8d 1e 60     STA $601e
de03: c9 0f        CMP #$0f
de05: 90 21        BCC +$21  [$de28]
de07: ad 1d 60     LDA $601d
de0a: c9 42        CMP #$42
de0c: 90 1a        BCC +$1a  [$de28]
de0e: f0 02        BEQ +$02  [$de12]
de10: b0 07        BCS +$07  [$de19]
de12: ad 1c 60     LDA $601c
de15: c9 40        CMP #$40
de17: 90 0f        BCC +$0f  [$de28]
de19: a9 3f        LDA #$3f
de1b: 8d 1c 60     STA $601c
de1e: a9 42        LDA #$42
de20: 8d 1d 60     STA $601d
de23: a9 0f        LDA #$0f
de25: 8d 1e 60     STA $601e
de28: 60           RTS

; set bank to $58 and RTS
de29: a9 00        LDA #$00
de2b: 8d 05 20     STA $2005
de2e: 8d 05 20     STA $2005
de31: a5 58        LDA $58
de33: 4c 03 fe     JMP $fe03  ; Show Bank in A in memory locations $8000-$bfff 

; Output string at p[$3e] in bank $57 to ($3a,$3b)
de36: a5 57        LDA $57
de38: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
de3b: 20 ab dc     JSR $dcab   ; Set p[$54] to the tile ($3a,$3b) in the 32x30 screen
de3e: a5 37        LDA $37
de40: f0 03        BEQ +$03  [$de45]
de42: 20 2e e1     JSR $e12e   ; wait for v-blank if $37!=0
de45: a0 00        LDY #$00    ; get next character
de47: b1 3e        LDA ($3e),Y
de49: f0 de        BEQ +$de  [$de29]  ; 00 -> done!
de4b: e6 3e        INC $3e
de4d: d0 02        BNE +$02  [$de51]
de4f: e6 3f        INC $3f
de51: c9 1a        CMP #$1a
de53: 90 28        BCC +$28  [$de7d]  ; < 0x1a -> special
de55: ae 02 20     LDX $2002
de58: a6 55        LDX $55
de5a: 8e 06 20     STX $2006
de5d: a6 54        LDX $54
de5f: 8e 06 20     STX $2006
de62: c9 7a        CMP #$7a
de64: b0 0f        BCS +$0f  [$de75]
de66: 38           SEC                ; < 0x7a -> double-character
de67: e9 1a        SBC #$1a           ; >= 0x7a -> normal font character
de69: aa           TAX
de6a: bd a0 f0     LDA $f0a0,X
de6d: 8d 07 20     STA $2007
de70: bd 50 f0     LDA $f050,X
de73: e6 54        INC $54
de75: 8d 07 20     STA $2007
de78: e6 54        INC $54
de7a: 4c 45 de     JMP $de45
de7d: c9 01        CMP #$01
de7f: d0 18        BNE +$18  [$de99]
de81: a2 40        LDX #$40     ;; 01 -> "\n\n" and maybe pause
de83: 86 10        STX $10
de85: a5 54        LDA $54
de87: 29 e0        AND #$e0
de89: 05 3a        ORA $3a
de8b: 18           CLC
de8c: 65 10        ADC $10
de8e: 85 54        STA $54
de90: a5 55        LDA $55
de92: 69 00        ADC #$00
de94: 85 55        STA $55
de96: 4c 3e de     JMP $de3e
de99: c9 02        CMP #$02
de9b: d0 03        BNE +$03  [$dea0]
de9d: 4c f0 df     JMP $dff0    ;; 02 XX -> output item name XX
dea0: c9 03        CMP #$03
dea2: d0 03        BNE +$03  [$dea7]
dea4: 4c 23 e0     JMP $e023    ;; 03 XX -> output price of item XX
dea7: c9 04        CMP #$04
dea9: d0 11        BNE +$11  [$debc]
deab: 20 3e e0     JSR $e03e    ;; 04 -> output party gold
deae: a9 0e        LDA #$0e
deb0: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
deb3: 20 4a 8e     JSR $8e4a   ; p[$3e] = 6-digit party gold
deb6: 20 3e de     JSR $de3e   ; output the number
deb9: 4c 4e e0     JMP $e04e   ; Load p[$3e] and $57
debc: c9 14        CMP #$14
debe: 90 05        BCC +$05  [$dec5]
dec0: a2 20        LDX #$20     ;; 05-0F and 14-19 -> "\n" and maybe pause
dec2: 4c 83 de     JMP $de83
dec5: c9 10        CMP #$10
dec7: 90 f7        BCC +$f7  [$dec0]
dec9: 6a           ROR
deca: 6a           ROR
decb: 6a           ROR
decc: 29 c0        AND #$c0
dece: 85 67        STA $67
ded0: b1 3e        LDA ($3e),Y
ded2: e6 3e        INC $3e
ded4: d0 02        BNE +$02  [$ded8]
ded6: e6 3f        INC $3f
ded8: c9 00        CMP #$00
deda: d0 27        BNE +$27  [$df03]
dedc: a6 67        LDX $67      ;; 10-13 00 -> warrior name
dede: bd 02 61     LDA $6102,X
dee1: 85 5c        STA $5c
dee3: bd 03 61     LDA $6103,X
dee6: 85 5d        STA $5d
dee8: bd 04 61     LDA $6104,X
deeb: 85 5e        STA $5e
deed: bd 05 61     LDA $6105,X
def0: 85 5f        STA $5f
def2: 20 3e e0     JSR $e03e   ; Save p[$3e] and $57
def5: a9 5c        LDA #$5c
def7: 85 3e        STA $3e
def9: a9 00        LDA #$00
defb: 85 3f        STA $3f
defd: 20 45 de     JSR $de45   ; Output the name
df00: 4c 4e e0     JMP $e04e   ; Load p[$3e] and $57
df03: c9 01        CMP #$01
df05: d0 0b        BNE +$0b  [$df12]
df07: a6 67        LDX $67     ;; 10-13 01 -> warrior class name
df09: bd 00 61     LDA $6100,X
df0c: 18           CLC
df0d: 69 f0        ADC #$f0
df0f: 4c f8 df     JMP $dff8
df12: c9 02        CMP #$02
df14: d0 0b        BNE +$0b  [$df21]
df16: a6 67        LDX $67     ;; 10-13 02 -> warrior status
df18: bd 01 61     LDA $6101,X
df1b: 18           CLC
df1c: 69 fc        ADC #$fc
df1e: 4c f8 df     JMP $dff8
df21: c9 0c        CMP #$0c
df23: 90 04        BCC +$04  [$df29]
df25: c9 2c        CMP #$2c
df27: 90 13        BCC +$13  [$df3c]
df29: aa           TAX         ;; 10-13 (03-0b or 2c-ff) -> warrior stat
df2a: 20 3e e0     JSR $e03e   ; Save p[$3e] and $57
df2d: a9 0e        LDA #$0e
df2f: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
df32: 8a           TXA
df33: 20 70 8d     JSR $8d70
df36: 20 3e de     JSR $de3e   ; output the string
df39: 4c 4e e0     JMP $e04e   ; Load p[$3e] and $57
df3c: c9 14        CMP #$14
df3e: b0 2f        BCS +$2f  [$df6f]
df40: c9 10        CMP #$10
df42: b0 14        BCS +$14  [$df58]
df44: 29 03        AND #$03    ;; 10-13 0c-0f -> warrior weapon
df46: 18           CLC
df47: 65 67        ADC $67
df49: aa           TAX
df4a: bd 18 61     LDA $6118,X
df4d: 85 10        STA $10
df4f: 29 7f        AND #$7f
df51: f0 17        BEQ +$17  [$df6a]
df53: 18           CLC
df54: 69 1b        ADC #$1b
df56: d0 12        BNE +$12  [$df6a]
df58: 29 03        AND #$03    ;; 10-13 10-13 -> warrior armor
df5a: 18           CLC
df5b: 65 67        ADC $67
df5d: aa           TAX
df5e: bd 1c 61     LDA $611c,X
df61: 85 10        STA $10
df63: 29 7f        AND #$7f
df65: f0 03        BEQ +$03  [$df6a]
df67: 18           CLC
df68: 69 43        ADC #$43
df6a: 85 11        STA $11
df6c: 4c a8 df     JMP $dfa8   ;; output the item
df6f: 38           SEC         ;; 10-13 14-2b -> warrior magic
df70: e9 14        SBC #$14
df72: aa           TAX
df73: bd 90 df     LDA $df90,X
df76: 18           CLC
df77: 65 67        ADC $67
df79: aa           TAX
df7a: 0a           ASL
df7b: 29 38        AND #$38
df7d: 18           CLC
df7e: 69 af        ADC #$af
df80: 85 10        STA $10
df82: bd 00 63     LDA $6300,X
df85: f0 06        BEQ +$06  [$df8d]
df87: 18           CLC
df88: 65 10        ADC $10
df8a: 4c f8 df     JMP $dff8   ;; output the spell name
df8d: 4c 3e de     JMP $de3e   ;; output nothing

; offset of each spell slot in player magic struct
df90: 00 01 02 04 05 06 08 09 0a 0c 0d 0e 10 11 12 14
dfa0: 15 16 18 19 1a 1c 1d 1e 

dfa8: a5 10        LDA $10
dfaa: d0 03        BNE +$03  [$dfaf]
dfac: 4c 45 de     JMP $de45   ; no item -> output nothing
dfaf: 30 06        BMI +$06  [$dfb7]
dfb1: a2 ff        LDX #$ff    ; "  " or "E-", depending on equipped bit
dfb3: a0 ff        LDY #$ff
dfb5: d0 04        BNE +$04  [$dfbb]
dfb7: a2 c7        LDX #$c7
dfb9: a0 c2        LDY #$c2
dfbb: ad 02 20     LDA $2002   ; clear v-blank flag
dfbe: a5 55        LDA $55     ; VRAM address = p[$54]
dfc0: 8d 06 20     STA $2006
dfc3: a5 54        LDA $54
dfc5: 8d 06 20     STA $2006
dfc8: a9 ff        LDA #$ff
dfca: 8d 07 20     STA $2007
dfcd: 8e 07 20     STX $2007
dfd0: e6 54        INC $54
dfd2: ad 02 20     LDA $2002
dfd5: a5 55        LDA $55
dfd7: 8d 06 20     STA $2006
dfda: a5 54        LDA $54
dfdc: 8d 06 20     STA $2006
dfdf: a9 ff        LDA #$ff
dfe1: 8d 07 20     STA $2007
dfe4: 8c 07 20     STY $2007
dfe7: e6 54        INC $54
dfe9: a5 10        LDA $10     ; output the item
dfeb: 29 7f        AND #$7f
dfed: 4c f8 df     JMP $dff8
dff0: b1 3e        LDA ($3e),Y
dff2: e6 3e        INC $3e
dff4: d0 02        BNE +$02  [$dff8]
dff6: e6 3f        INC $3f
dff8: 20 3e e0     JSR $e03e   ;; Output item in A ; Save p[$3e] and $57
dffb: aa           TAX
dffc: a9 0a        LDA #$0a
dffe: 85 57        STA $57
e000: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
e003: 8a           TXA
e004: 0a           ASL
e005: aa           TAX
e006: b0 0b        BCS +$0b  [$e013]
e008: bd 00 b7     LDA $b700,X
e00b: 85 3e        STA $3e
e00d: bd 01 b7     LDA $b701,X
e010: 4c 1b e0     JMP $e01b
e013: bd 00 b8     LDA $b800,X
e016: 85 3e        STA $3e
e018: bd 01 b8     LDA $b801,X
e01b: 85 3f        STA $3f
e01d: 20 45 de     JSR $de45   ; output the item name
e020: 4c 4e e0     JMP $e04e   ; Load p[$3e] and $57
e023: b1 3e        LDA ($3e),Y
e025: e6 3e        INC $3e
e027: d0 02        BNE +$02  [$e02b]
e029: e6 3f        INC $3f
e02b: 20 3e e0     JSR $e03e    ; Save p[$3e] and $57
e02e: aa           TAX
e02f: a9 0e        LDA #$0e
e031: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
e034: 8a           TXA
e035: 20 44 8e     JSR $8e44   ; p[$3e] = 5-digit price of item in A
e038: 20 3e de     JSR $de3e   ; output the number
e03b: 4c 4e e0     JMP $e04e   ; Load p[$3e] and $57

; Save p[$3e] and $57
e03e: a4 3e        LDY $3e
e040: 8c 10 01     STY $0110
e043: a4 3f        LDY $3f
e045: 8c 11 01     STY $0111
e048: a4 57        LDY $57
e04a: 8c 12 01     STY $0112
e04d: 60           RTS

; Load p[$3e] and $57
e04e: ad 10 01     LDA $0110
e051: 85 3e        STA $3e
e053: ad 11 01     LDA $0111
e056: 85 3f        STA $3f
e058: ad 12 01     LDA $0112
e05b: 85 57        STA $57
e05d: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
e060: 4c 45 de     JMP $de45

; Draw $3c by $3d window at ($38,$39), slowly if $37, and ($3a,$3b)=($38,$39)+(1,2)
e063: a5 38        LDA $38
e065: 85 3a        STA $3a
e067: a5 39        LDA $39
e069: 85 3b        STA $3b
e06b: 20 ab dc     JSR $dcab   ; Set p[$54] to the tile ($3a,$3b) in the 32x30 screen
e06e: a5 3c        LDA $3c
e070: 38           SEC
e071: e9 02        SBC #$02
e073: 85 1a        STA $1a
e075: a5 3d        LDA $3d
e077: 38           SEC
e078: e9 02        SBC #$02
e07a: 85 1b        STA $1b
e07c: 20 fc e0     JSR $e0fc   ; Draw window top border (inner width $1a) at p[$54] and point p[$54] to next line
e07f: 20 a5 e0     JSR $e0a5   ; Draw window middle row (inner width $1a) at p[$54] and point p[$54] to next line
e082: c6 1b        DEC $1b
e084: d0 f9        BNE +$f9  [$e07f]
e086: 20 d7 e0     JSR $e0d7   ; Draw window bottom border (inner width $1a) at p[$54] and point p[$54] to next line
e089: a5 ff        LDA $ff
e08b: 8d 00 20     STA $2000
e08e: a9 00        LDA #$00
e090: 8d 05 20     STA $2005
e093: 8d 05 20     STA $2005
e096: a5 3a        LDA $3a
e098: 18           CLC
e099: 69 01        ADC #$01
e09b: 85 3a        STA $3a
e09d: a5 3b        LDA $3b
e09f: 18           CLC
e0a0: 69 02        ADC #$02
e0a2: 85 3b        STA $3b
e0a4: 60           RTS

; Draw window middle row (inner width $1a) at p[$54] and point p[$54] to next line
e0a5: 20 2e e1     JSR $e12e   ; wait for v-blank if $37!=0
e0a8: ad 02 20     LDA $2002   ; clear v-blank flag
e0ab: a5 55        LDA $55     ; VRAM address = p[$54]
e0ad: 8d 06 20     STA $2006
e0b0: a5 54        LDA $54
e0b2: 8d 06 20     STA $2006
e0b5: a6 1a        LDX $1a
e0b7: a9 fa        LDA #$fa
e0b9: 8d 07 20     STA $2007
e0bc: a9 ff        LDA #$ff
e0be: 8d 07 20     STA $2007
e0c1: ca           DEX
e0c2: d0 fa        BNE +$fa  [$e0be]
e0c4: a9 fb        LDA #$fb
e0c6: 8d 07 20     STA $2007
e0c9: a5 54        LDA $54
e0cb: 18           CLC
e0cc: 69 20        ADC #$20
e0ce: 85 54        STA $54
e0d0: a5 55        LDA $55
e0d2: 69 00        ADC #$00
e0d4: 85 55        STA $55
e0d6: 60           RTS

; Draw window bottom border (inner width $1a) at p[$54] and point p[$54] to next line
e0d7: 20 2e e1     JSR $e12e   ; wait for v-blank if $37!=0
e0da: ad 02 20     LDA $2002   ; clear v-blank flag
e0dd: a5 55        LDA $55     ; VRAM address = p[$54]
e0df: 8d 06 20     STA $2006
e0e2: a5 54        LDA $54
e0e4: 8d 06 20     STA $2006
e0e7: a6 1a        LDX $1a
e0e9: a9 fc        LDA #$fc
e0eb: 8d 07 20     STA $2007
e0ee: a9 fd        LDA #$fd
e0f0: 8d 07 20     STA $2007
e0f3: ca           DEX
e0f4: d0 fa        BNE +$fa  [$e0f0]
e0f6: a9 fe        LDA #$fe
e0f8: 8d 07 20     STA $2007
e0fb: 60           RTS

; Draw window top border (inner width $1a) at p[$54] and point p[$54] to next line
e0fc: 20 2e e1     JSR $e12e   ; wait for v-blank if $37!=0
e0ff: ad 02 20     LDA $2002   ; clear v-blank flag
e102: a5 55        LDA $55     ; VRAM address = p[$54]
e104: 8d 06 20     STA $2006
e107: a5 54        LDA $54
e109: 8d 06 20     STA $2006
e10c: a6 1a        LDX $1a
e10e: a9 f7        LDA #$f7
e110: 8d 07 20     STA $2007
e113: a9 f8        LDA #$f8
e115: 8d 07 20     STA $2007
e118: ca           DEX
e119: d0 fa        BNE +$fa  [$e115]
e11b: a9 f9        LDA #$f9
e11d: 8d 07 20     STA $2007
e120: a5 54        LDA $54
e122: 18           CLC
e123: 69 20        ADC #$20
e125: 85 54        STA $54
e127: a5 55        LDA $55
e129: 69 00        ADC #$00
e12b: 85 55        STA $55
e12d: 60           RTS

; wait for v-blank if $37!=0
e12e: a5 37        LDA $37
e130: f0 13        BEQ +$13  [$e145]
e132: a5 ff        LDA $ff
e134: 8d 00 20     STA $2000
e137: a9 00        LDA #$00
e139: 8d 05 20     STA $2005
e13c: 8d 05 20     STA $2005
e13f: 20 89 c6     JSR $c689   ; Start music or play current notes
e142: 20 00 fe     JSR $fe00   ; wait for V-blank
e145: 60           RTS

; Clear (tile 0) the $3c by $3d rectangle at ($38,$39), slowly if $37
e146: a5 38        LDA $38
e148: 85 3a        STA $3a
e14a: a5 39        LDA $39
e14c: 18           CLC
e14d: 65 3d        ADC $3d
e14f: 38           SEC
e150: e9 01        SBC #$01
e152: 85 3b        STA $3b
e154: 20 ab dc     JSR $dcab   ; Set p[$54] to the tile ($3a,$3b) in the 32x30 screen
e157: a5 3d        LDA $3d
e159: 85 1b        STA $1b
e15b: a5 37        LDA $37
e15d: f0 13        BEQ +$13  [$e172]
e15f: a5 ff        LDA $ff
e161: 8d 00 20     STA $2000
e164: a9 00        LDA #$00
e166: 8d 05 20     STA $2005
e169: 8d 05 20     STA $2005
e16c: 20 89 c6     JSR $c689   ; Start music or play current notes
e16f: 20 00 fe     JSR $fe00   ; wait for V-blank
e172: ad 02 20     LDA $2002
e175: a5 55        LDA $55
e177: 8d 06 20     STA $2006
e17a: a5 54        LDA $54
e17c: 8d 06 20     STA $2006
e17f: a6 3c        LDX $3c
e181: a9 00        LDA #$00
e183: 8d 07 20     STA $2007
e186: ca           DEX
e187: d0 fa        BNE +$fa  [$e183]
e189: a5 54        LDA $54
e18b: 38           SEC
e18c: e9 20        SBC #$20
e18e: 85 54        STA $54
e190: a5 55        LDA $55
e192: e9 00        SBC #$00
e194: 85 55        STA $55
e196: c6 1b        DEC $1b
e198: d0 c1        BNE +$c1  [$e15b]
e19a: a5 ff        LDA $ff
e19c: 8d 00 20     STA $2000
e19f: a9 00        LDA #$00
e1a1: 8d 05 20     STA $2005
e1a4: 8d 05 20     STA $2005
e1a7: 60           RTS

; Airship rise animation?
e1a8: a9 6f        LDA #$6f
e1aa: 85 1a        STA $1a
e1ac: 20 e1 e1     JSR $e1e1
e1af: a5 f0        LDA $f0
e1b1: 29 01        AND #$01
e1b3: d0 f7        BNE +$f7  [$e1ac]
e1b5: c6 1a        DEC $1a
e1b7: a5 1a        LDA $1a
e1b9: c9 4f        CMP #$4f
e1bb: b0 ef        BCS +$ef  [$e1ac]
e1bd: a9 01        LDA #$01
e1bf: 85 33        STA $33
e1c1: 60           RTS

e1c2: a9 4f        LDA #$4f
e1c4: 85 1a        STA $1a
e1c6: 20 e1 e1     JSR $e1e1
e1c9: a5 f0        LDA $f0
e1cb: 29 01        AND #$01
e1cd: d0 f7        BNE +$f7  [$e1c6]
e1cf: e6 1a        INC $1a
e1d1: a5 1a        LDA $1a
e1d3: c9 70        CMP #$70
e1d5: 90 ef        BCC +$ef  [$e1c6]
e1d7: a9 01        LDA #$01
e1d9: 85 33        STA $33
e1db: a9 00        LDA #$00
e1dd: 8d 0c 40     STA $400c
e1e0: 60           RTS

e1e1: 20 00 fe     JSR $fe00   ; wait for V-blank
e1e4: a9 02        LDA #$02    ; upload sprites
e1e6: 8d 14 40     STA $4014
e1e9: a5 f0        LDA $f0
e1eb: 18           CLC
e1ec: 69 01        ADC #$01
e1ee: 85 f0        STA $f0
e1f0: 20 46 c3     JSR $c346   ; Enable display and set scrolling for world map?
e1f3: 20 3c c4     JSR $c43c   ; Clear sprites
e1f6: 20 81 c6     JSR $c681   ; Start music or play current notes, bank=13
e1f9: a9 70        LDA #$70
e1fb: 85 40        STA $40
e1fd: a5 1a        LDA $1a
e1ff: 85 41        STA $41
e201: a5 f0        LDA $f0
e203: 29 08        AND #$08
e205: 85 10        STA $10
e207: a9 38        LDA #$38
e209: 20 de e2     JSR $e2de
e20c: 20 b8 e2     JSR $e2b8
e20f: 20 73 e3     JSR $e373
e212: 20 a6 e3     JSR $e3a6
e215: a9 38        LDA #$38
e217: 8d 0c 40     STA $400c
e21a: a5 f0        LDA $f0
e21c: 8d 0e 40     STA $400e
e21f: a9 00        LDA #$00
e221: 8d 0f 40     STA $400f
e224: 60           RTS

; Draw player world map sprite
e225: a4 42        LDY $42
e227: c0 08        CPY #$08
e229: f0 36        BEQ +$36  [$e261]
e22b: c0 04        CPY #$04
e22d: f0 3b        BEQ +$3b  [$e26a]
e22f: c0 02        CPY #$02
e231: f0 42        BEQ +$42  [$e275]
e233: 20 81 e2     JSR $e281   ; Draw player sprite
e236: a5 43        LDA $43
e238: f0 0e        BEQ +$0e  [$e248]
e23a: a5 26        LDA $26
e23c: 38           SEC
e23d: e9 0c        SBC #$0c
e23f: aa           TAX
e240: a9 f4        LDA #$f4
e242: 9d 00 02     STA $0200,X
e245: 9d 08 02     STA $0208,X
e248: ad 04 60     LDA $6004
e24b: f0 0e        BEQ +$0e  [$e25b]
e24d: c9 1f        CMP #$1f
e24f: b0 07        BCS +$07  [$e258]
e251: ee 04 60     INC $6004
e254: 4a           LSR
e255: 4a           LSR
e256: b0 03        BCS +$03  [$e25b]
e258: 20 8c e3     JSR $e38c
e25b: 20 73 e3     JSR $e373
e25e: 4c a6 e3     JMP $e3a6
e261: 20 81 e2     JSR $e281   ; Draw player sprite
e264: 20 73 e3     JSR $e373
e267: 4c a6 e3     JMP $e3a6
e26a: 20 a6 e3     JSR $e3a6
e26d: a0 04        LDY #$04
e26f: 20 81 e2     JSR $e281   ; Draw player sprite
e272: 4c 8c e3     JMP $e38c
e275: 20 81 e2     JSR $e281   ; Draw player sprite
e278: 20 73 e3     JSR $e373
e27b: 20 8c e3     JSR $e38c
e27e: 4c a6 e3     JMP $e3a6

; Draw player sprite
e281: a9 70        LDA #$70
e283: 85 40        STA $40
e285: b9 6a e3     LDA $e36a,Y
e288: c0 08        CPY #$08
e28a: d0 08        BNE +$08  [$e294]
e28c: 85 41        STA $41
e28e: a5 f0        LDA $f0
e290: 0a           ASL
e291: 4c 9c e2     JMP $e29c
e294: 85 41        STA $41
e296: a5 35        LDA $35
e298: d0 02        BNE +$02  [$e29c]
e29a: a5 36        LDA $36
e29c: 29 08        AND #$08
e29e: a6 33        LDX $33
e2a0: 1d 17 e4     ORA $e417,X
e2a3: 85 10        STA $10
e2a5: c0 01        CPY #$01
e2a7: f0 47        BEQ +$47  [$e2f0]
e2a9: c0 02        CPY #$02
e2ab: f0 2f        BEQ +$2f  [$e2dc]
e2ad: c0 04        CPY #$04
e2af: f0 24        BEQ +$24  [$e2d5]
e2b1: a9 38        LDA #$38
e2b3: 85 12        STA $12
e2b5: 20 e0 e2     JSR $e2e0
e2b8: a5 f0        LDA $f0
e2ba: 4a           LSR
e2bb: 90 17        BCC +$17  [$e2d4]
e2bd: a9 6f        LDA #$6f
e2bf: 85 41        STA $41
e2c1: a9 70        LDA #$70
e2c3: 85 40        STA $40
e2c5: a9 10        LDA #$10
e2c7: 85 12        STA $12
e2c9: a9 a7        LDA #$a7
e2cb: 85 10        STA $10
e2cd: a9 e4        LDA #$e4
e2cf: 85 11        STA $11
e2d1: 4c 01 e3     JMP $e301   ; Setup 2x2 sprite at ($40,$41) with (tiles+$12) & flags at p[$10]
e2d4: 60           RTS
e2d5: a9 20        LDA #$20
e2d7: 85 12        STA $12
e2d9: 4c e0 e2     JMP $e2e0
e2dc: a9 50        LDA #$50
e2de: 85 12        STA $12
e2e0: a5 10        LDA $10
e2e2: 18           CLC
e2e3: 69 67        ADC #$67
e2e5: 85 10        STA $10
e2e7: a9 e4        LDA #$e4
e2e9: 69 00        ADC #$00
e2eb: 85 11        STA $11
e2ed: 4c 01 e3     JMP $e301   ; Setup 2x2 sprite at ($40,$41) with (tiles+$12) & flags at p[$10]

e2f0: a9 00        LDA #$00
e2f2: 85 12        STA $12
e2f4: a9 27        LDA #$27
e2f6: 18           CLC
e2f7: 65 10        ADC $10
e2f9: 85 10        STA $10
e2fb: a9 e4        LDA #$e4
e2fd: 69 00        ADC #$00
e2ff: 85 11        STA $11

; Setup 2x2 sprite at ($40,$41) with (tiles+$12) & flags at p[$10]
e301: a0 00        LDY #$00
e303: a6 26        LDX $26
e305: a5 41        LDA $41
e307: 9d 00 02     STA $0200,X
e30a: 9d 08 02     STA $0208,X
e30d: 18           CLC
e30e: 69 08        ADC #$08
e310: 9d 04 02     STA $0204,X
e313: 9d 0c 02     STA $020c,X
e316: a5 40        LDA $40
e318: 9d 03 02     STA $0203,X
e31b: 9d 07 02     STA $0207,X
e31e: 18           CLC
e31f: 69 08        ADC #$08
e321: 9d 0b 02     STA $020b,X
e324: 9d 0f 02     STA $020f,X
e327: b1 10        LDA ($10),Y
e329: c8           INY
e32a: 18           CLC
e32b: 65 12        ADC $12
e32d: 9d 01 02     STA $0201,X
e330: b1 10        LDA ($10),Y
e332: c8           INY
e333: 9d 02 02     STA $0202,X
e336: b1 10        LDA ($10),Y
e338: c8           INY
e339: 18           CLC
e33a: 65 12        ADC $12
e33c: 9d 05 02     STA $0205,X
e33f: b1 10        LDA ($10),Y
e341: c8           INY
e342: 9d 06 02     STA $0206,X
e345: b1 10        LDA ($10),Y
e347: c8           INY
e348: 18           CLC
e349: 65 12        ADC $12
e34b: 9d 09 02     STA $0209,X
e34e: b1 10        LDA ($10),Y
e350: c8           INY
e351: 9d 0a 02     STA $020a,X
e354: b1 10        LDA ($10),Y
e356: c8           INY
e357: 18           CLC
e358: 65 12        ADC $12
e35a: 9d 0d 02     STA $020d,X
e35d: b1 10        LDA ($10),Y
e35f: 9d 0e 02     STA $020e,X
e362: a5 26        LDA $26
e364: 18           CLC
e365: 69 10        ADC #$10
e367: 85 26        STA $26
e369: 60           RTS

e36a: 6c 6c 6f 6f 6f 6f 6f 6f 4f 

e373: ad 00 60     LDA $6000
e376: f0 2d        BEQ +$2d  [$e3a5]
e378: ae 01 60     LDX $6001
e37b: ac 02 60     LDY $6002
e37e: 20 df e3     JSR $e3df
e381: b0 22        BCS +$22  [$e3a5]
e383: a9 00        LDA #$00
e385: 85 10        STA $10
e387: a9 20        LDA #$20
e389: 4c de e2     JMP $e2de
e38c: ad 04 60     LDA $6004
e38f: f0 14        BEQ +$14  [$e3a5]
e391: ae 05 60     LDX $6005
e394: ac 06 60     LDY $6006
e397: 20 df e3     JSR $e3df
e39a: b0 09        BCS +$09  [$e3a5]
e39c: a9 00        LDA #$00
e39e: 85 10        STA $10
e3a0: a9 38        LDA #$38
e3a2: 4c de e2     JMP $e2de
e3a5: 60           RTS
e3a6: ad 08 60     LDA $6008
e3a9: f0 10        BEQ +$10  [$e3bb]
e3ab: ae 09 60     LDX $6009
e3ae: ac 0a 60     LDY $600a
e3b1: 20 df e3     JSR $e3df
e3b4: b0 05        BCS +$05  [$e3bb]
e3b6: a9 08        LDA #$08
e3b8: 20 cd e3     JSR $e3cd
e3bb: ad 0c 60     LDA $600c
e3be: f0 e5        BEQ +$e5  [$e3a5]
e3c0: ae 0d 60     LDX $600d
e3c3: ac 0e 60     LDY $600e
e3c6: 20 df e3     JSR $e3df
e3c9: b0 da        BCS +$da  [$e3a5]
e3cb: a9 10        LDA #$10
e3cd: 18           CLC
e3ce: 69 a7        ADC #$a7
e3d0: 85 10        STA $10
e3d2: a9 e4        LDA #$e4
e3d4: 69 00        ADC #$00
e3d6: 85 11        STA $11
e3d8: a9 10        LDA #$10
e3da: 85 12        STA $12
e3dc: 4c 01 e3     JMP $e301   ; Setup 2x2 sprite at ($40,$41) with (tiles+$12) & flags at p[$10]
e3df: 98           TYA
e3e0: 38           SEC
e3e1: e5 28        SBC $28
e3e3: c9 10        CMP #$10
e3e5: b0 26        BCS +$26  [$e40d]
e3e7: 0a           ASL
e3e8: 0a           ASL
e3e9: 0a           ASL
e3ea: 0a           ASL
e3eb: 18           CLC
e3ec: e5 36        SBC $36
e3ee: c9 ec        CMP #$ec
e3f0: b0 1b        BCS +$1b  [$e40d]
e3f2: 85 41        STA $41
e3f4: 8a           TXA
e3f5: 38           SEC
e3f6: e5 27        SBC $27
e3f8: c9 10        CMP #$10
e3fa: b0 11        BCS +$11  [$e40d]
e3fc: 0a           ASL
e3fd: 0a           ASL
e3fe: 0a           ASL
e3ff: 0a           ASL
e400: 38           SEC
e401: e5 35        SBC $35
e403: 90 08        BCC +$08  [$e40d]
e405: c9 f8        CMP #$f8
e407: b0 04        BCS +$04  [$e40d]
e409: 85 40        STA $40
e40b: 18           CLC
e40c: 60           RTS
e40d: 38           SEC
e40e: 60           RTS
e40f: a0 01        LDY #$01
e411: 20 81 e2     JSR $e281   ; Draw player sprite
e414: 4c c7 e4     JMP $e4c7

e417: 00 00 10 00 30 00 10 00 20 00 10 00 30 00 10 00
e427: 09 40 0b 41 08 40 0a 41 0d 40 0f 41 0c 40 0e 41
e437: 08 00 0a 01 09 00 0b 01 0c 00 0e 01 0d 00 0f 01
e447: 04 00 06 01 05 00 07 01 04 00 07 41 05 00 06 41
e457: 00 00 02 01 01 00 03 01 00 00 03 41 01 00 02 41
e467: 11 42 13 42 10 42 12 42 15 42 17 42 14 42 16 42
e477: 10 02 12 02 11 02 13 02 14 02 16 02 15 02 17 02
e487: 00 02 02 02 01 02 03 02 04 02 06 02 05 02 07 02
e497: 08 02 0a 02 09 02 0b 02 0c 02 0e 02 0d 02 0f 02
e4a7: 00 03 02 03 01 03 03 03 04 03 06 03 05 03 07 03
e4b7: 08 03 0a 03 09 03 0b 03 00 00 00 00 00 00 00 00

e4c7: a5 f0        LDA $f0
e4c9: 4a           LSR
e4ca: b0 16        BCS +$16  [$e4e2]
e4cc: a2 00        LDX #$00
e4ce: bd 00 6f     LDA $6f00,X
e4d1: f0 03        BEQ +$03  [$e4d6]
e4d3: 20 88 e6     JSR $e688    ; Move sprite X and draw into sprite RAM buffer
e4d6: 8a           TXA
e4d7: 18           CLC
e4d8: 69 10        ADC #$10
e4da: aa           TAX
e4db: c9 f0        CMP #$f0
e4dd: 90 ef        BCC +$ef  [$e4ce]
e4df: 4c 0a e5     JMP $e50a
e4e2: a2 e0        LDX #$e0
e4e4: bd 00 6f     LDA $6f00,X
e4e7: f0 03        BEQ +$03  [$e4ec]
e4e9: 20 88 e6     JSR $e688    ; Move sprite X and draw into sprite RAM buffer
e4ec: 8a           TXA
e4ed: 38           SEC
e4ee: e9 10        SBC #$10
e4f0: aa           TAX
e4f1: b0 f1        BCS +$f1  [$e4e4]
e4f3: 4c 0a e5     JMP $e50a

e4f6: a2 00        LDX #$00
e4f8: bd 00 6f     LDA $6f00,X
e4fb: f0 03        BEQ +$03  [$e500]
e4fd: 20 d8 e6     JSR $e6d8
e500: 8a           TXA
e501: 18           CLC
e502: 69 10        ADC #$10
e504: aa           TAX
e505: c9 f0        CMP #$f0
e507: 90 ef        BCC +$ef  [$e4f8]
e509: 60           RTS

;; Decide if a sprite should start moving
e50a: a5 4a        LDA $4a      ; rotates through each time?
e50c: 18           CLC
e50d: 69 10        ADC #$10
e50f: 29 f0        AND #$f0
e511: c9 f0        CMP #$f0
e513: 90 02        BCC +$02  [$e517]
e515: a9 00        LDA #$00
e517: 85 4a        STA $4a
e519: aa           TAX
e51a: bd 00 6f     LDA $6f00,X  ; Sprite exists? RET if no
e51d: f0 0a        BEQ +$0a  [$e529]
e51f: bd 01 6f     LDA $6f01,X  ; Sprite doesn't move or is currently moving => RET
e522: 29 40        AND #$40
e524: 1d 0c 6f     ORA $6f0c,X
e527: f0 01        BEQ +$01  [$e52a]
e529: 60           RTS
e52a: a5 0d        LDA $0d      ; Out-of-room sprites only move when you're out of the room. Weird.
e52c: 29 01        AND #$01
e52e: f0 05        BEQ +$05  [$e535]
e530: bd 01 6f     LDA $6f01,X
e533: 10 f4        BPL +$f4  [$e529]
e535: bd 0b 6f     LDA $6f0b,X  ; Move if counter 0, else dec and RET
e538: f0 07        BEQ +$07  [$e541]
e53a: 38           SEC
e53b: e9 01        SBC #$01
e53d: 9d 0b 6f     STA $6f0b,X
e540: 60           RTS
e541: bd 02 6f     LDA $6f02,X  ; Current pos in ($14,$15)
e544: 85 14        STA $14
e546: bd 03 6f     LDA $6f03,X
e549: 85 15        STA $15
e54b: a5 f0        LDA $f0      ; Pick random-ish direction
e54d: 65 f4        ADC $f4
e54f: 85 f4        STA $f4
e551: 29 03        AND #$03
e553: c9 02        CMP #$02
e555: 90 77        BCC +$77  [$e5ce]
e557: f0 37        BEQ +$37  [$e590]
e559: a5 15        LDA $15      ; Move down
e55b: 18           CLC
e55c: 69 01        ADC #$01
e55e: 29 3f        AND #$3f
e560: 85 15        STA $15
e562: 20 30 e6     JSR $e630
e565: b0 28        BCS +$28  [$e58f]
e567: a5 15        LDA $15
e569: 9d 03 6f     STA $6f03,X
e56c: a9 01        LDA #$01
e56e: 9d 09 6f     STA $6f09,X
e571: a9 08        LDA #$08
e573: 9d 0c 6f     STA $6f0c,X
e576: bd 00 6f     LDA $6f00,X
e579: c9 3a        CMP #$3a     ; (bats always use the move-left sprite)
e57b: 90 08        BCC +$08  [$e585]
e57d: c9 3f        CMP #$3f
e57f: 90 76        BCC +$76  [$e5f7]
e581: c9 57        CMP #$57
e583: f0 72        BEQ +$72  [$e5f7]
e585: a9 db        LDA #$db
e587: 9d 0e 6f     STA $6f0e,X
e58a: a9 e7        LDA #$e7
e58c: 4c 25 e6     JMP $e625
e58f: 60           RTS
e590: a5 15        LDA $15      ; move up
e592: 38           SEC
e593: e9 01        SBC #$01
e595: 29 3f        AND #$3f
e597: 85 15        STA $15
e599: 20 30 e6     JSR $e630
e59c: b0 f1        BCS +$f1  [$e58f]
e59e: a5 15        LDA $15
e5a0: 9d 03 6f     STA $6f03,X
e5a3: 9d 05 6f     STA $6f05,X
e5a6: a9 ff        LDA #$ff
e5a8: 9d 09 6f     STA $6f09,X
e5ab: a9 0f        LDA #$0f
e5ad: 9d 07 6f     STA $6f07,X
e5b0: a9 04        LDA #$04
e5b2: 9d 0c 6f     STA $6f0c,X
e5b5: bd 00 6f     LDA $6f00,X
e5b8: c9 3a        CMP #$3a     ; (bats always use the move-left sprite)
e5ba: 90 08        BCC +$08  [$e5c4]
e5bc: c9 3f        CMP #$3f
e5be: 90 37        BCC +$37  [$e5f7]
e5c0: c9 57        CMP #$57
e5c2: f0 33        BEQ +$33  [$e5f7]
e5c4: a9 cb        LDA #$cb
e5c6: 9d 0e 6f     STA $6f0e,X
e5c9: a9 e7        LDA #$e7
e5cb: 4c 25 e6     JMP $e625
e5ce: c9 00        CMP #$00
e5d0: f0 2f        BEQ +$2f  [$e601]
e5d2: a5 14        LDA $14      ; move left
e5d4: 38           SEC
e5d5: e9 01        SBC #$01
e5d7: 29 3f        AND #$3f
e5d9: 85 14        STA $14
e5db: 20 30 e6     JSR $e630
e5de: b0 af        BCS +$af  [$e58f]
e5e0: a5 14        LDA $14
e5e2: 9d 04 6f     STA $6f04,X
e5e5: 9d 02 6f     STA $6f02,X
e5e8: a9 ff        LDA #$ff
e5ea: 9d 08 6f     STA $6f08,X
e5ed: a9 0f        LDA #$0f
e5ef: 9d 06 6f     STA $6f06,X
e5f2: a9 02        LDA #$02
e5f4: 9d 0c 6f     STA $6f0c,X
e5f7: a9 bb        LDA #$bb
e5f9: 9d 0e 6f     STA $6f0e,X
e5fc: a9 e7        LDA #$e7
e5fe: 4c 25 e6     JMP $e625
e601: a5 14        LDA $14      ; move right
e603: 18           CLC
e604: 69 01        ADC #$01
e606: 29 3f        AND #$3f
e608: 85 14        STA $14
e60a: 20 30 e6     JSR $e630
e60d: b0 80        BCS +$80  [$e58f]
e60f: a5 14        LDA $14
e611: 9d 02 6f     STA $6f02,X
e614: a9 01        LDA #$01
e616: 9d 08 6f     STA $6f08,X
e619: a9 01        LDA #$01
e61b: 9d 0c 6f     STA $6f0c,X
e61e: a9 ab        LDA #$ab
e620: 9d 0e 6f     STA $6f0e,X
e623: a9 e7        LDA #$e7
e625: 9d 0f 6f     STA $6f0f,X
e628: a5 f0        LDA $f0      ; Update the sprite's move-counter
e62a: 29 07        AND #$07
e62c: 9d 0b 6f     STA $6f0b,X
e62f: 60           RTS

e630: a5 15        LDA $15      ;; Get map tile for move target
e632: 4a           LSR
e633: 4a           LSR
e634: 09 70        ORA #$70
e636: 85 11        STA $11
e638: a5 15        LDA $15
e63a: 6a           ROR
e63b: 6a           ROR
e63c: 6a           ROR
e63d: 29 c0        AND #$c0
e63f: 05 14        ORA $14
e641: 85 10        STA $10
e643: a0 00        LDY #$00
e645: b1 10        LDA ($10),Y
e647: 0a           ASL          ;; And get tile data for that tile
e648: a8           TAY
e649: b9 00 04     LDA $0400,Y
e64c: 29 c1        AND #$c1     ;; Sprites refuse to move to any teleport square or any square with bit 1 set
e64e: f0 02        BEQ +$02  [$e652]
e650: 38           SEC
e651: 60           RTS
e652: a5 68        LDA $68
e654: c5 14        CMP $14
e656: d0 08        BNE +$08  [$e660]
e658: a5 69        LDA $69
e65a: c5 15        CMP $15
e65c: d0 02        BNE +$02  [$e660]
e65e: 38           SEC
e65f: 60           RTS
e660: a0 00        LDY #$00
e662: 84 10        STY $10
e664: e4 10        CPX $10
e666: f0 15        BEQ +$15  [$e67d]
e668: b9 00 6f     LDA $6f00,Y
e66b: f0 10        BEQ +$10  [$e67d]
e66d: a5 14        LDA $14
e66f: d9 02 6f     CMP $6f02,Y
e672: d0 09        BNE +$09  [$e67d]
e674: a5 15        LDA $15
e676: d9 03 6f     CMP $6f03,Y
e679: d0 02        BNE +$02  [$e67d]
e67b: 38           SEC
e67c: 60           RTS
e67d: 98           TYA
e67e: 18           CLC
e67f: 69 10        ADC #$10
e681: a8           TAY
e682: c9 f0        CMP #$f0
e684: 90 dc        BCC +$dc  [$e662]
e686: 18           CLC
e687: 60           RTS

; Move sprite X and draw into sprite RAM buffer
e688: bd 0d 6f     LDA $6f0d,X  ;; Add delta-X and delta-Y to sprite fine pos
e68b: d0 06        BNE +$06  [$e693]
e68d: a5 f0        LDA $f0
e68f: 29 01        AND #$01
e691: d0 45        BNE +$45  [$e6d8]
e693: bd 08 6f     LDA $6f08,X
e696: f0 1f        BEQ +$1f  [$e6b7]
e698: 18           CLC
e699: 7d 06 6f     ADC $6f06,X
e69c: 29 0f        AND #$0f
e69e: 9d 06 6f     STA $6f06,X
e6a1: d0 35        BNE +$35  [$e6d8]
e6a3: a9 00        LDA #$00
e6a5: 9d 08 6f     STA $6f08,X
e6a8: 9d 0c 6f     STA $6f0c,X
e6ab: 9d 0d 6f     STA $6f0d,X
e6ae: bd 02 6f     LDA $6f02,X
e6b1: 9d 04 6f     STA $6f04,X
e6b4: 4c d8 e6     JMP $e6d8
e6b7: bd 09 6f     LDA $6f09,X
e6ba: f0 1c        BEQ +$1c  [$e6d8]
e6bc: 18           CLC
e6bd: 7d 07 6f     ADC $6f07,X
e6c0: 29 0f        AND #$0f
e6c2: 9d 07 6f     STA $6f07,X
e6c5: d0 11        BNE +$11  [$e6d8]
e6c7: a9 00        LDA #$00
e6c9: 9d 09 6f     STA $6f09,X
e6cc: 9d 0c 6f     STA $6f0c,X
e6cf: 9d 0d 6f     STA $6f0d,X
e6d2: bd 03 6f     LDA $6f03,X
e6d5: 9d 05 6f     STA $6f05,X
e6d8: a5 0d        LDA $0d      ;; If player in-room doesn't match sprite,
e6da: 29 01        AND #$01     ;; return
e6dc: f0 07        BEQ +$07  [$e6e5]
e6de: bd 01 6f     LDA $6f01,X
e6e1: 30 07        BMI +$07  [$e6ea]
e6e3: 10 47        BPL +$47  [$e72c]
e6e5: bd 01 6f     LDA $6f01,X
e6e8: 30 42        BMI +$42  [$e72c]
e6ea: bd 07 6f     LDA $6f07,X  ;; Determine if the sprite is actually on-screen
e6ed: 18           CLC
e6ee: e5 36        SBC $36
e6f0: 29 0f        AND #$0f
e6f2: 85 10        STA $10
e6f4: bd 05 6f     LDA $6f05,X
e6f7: e5 2a        SBC $2a
e6f9: 29 3f        AND #$3f
e6fb: c9 10        CMP #$10
e6fd: b0 2d        BCS +$2d  [$e72c]
e6ff: 0a           ASL
e700: 0a           ASL
e701: 0a           ASL
e702: 0a           ASL
e703: 05 10        ORA $10
e705: c9 e8        CMP #$e8
e707: b0 23        BCS +$23  [$e72c]
e709: e9 02        SBC #$02
e70b: 85 41        STA $41
e70d: bd 06 6f     LDA $6f06,X
e710: 38           SEC
e711: e5 35        SBC $35
e713: 29 0f        AND #$0f
e715: 85 10        STA $10
e717: bd 04 6f     LDA $6f04,X
e71a: e5 29        SBC $29
e71c: 29 3f        AND #$3f
e71e: c9 10        CMP #$10
e720: b0 0a        BCS +$0a  [$e72c]
e722: 0a           ASL
e723: 0a           ASL
e724: 0a           ASL
e725: 0a           ASL
e726: 05 10        ORA $10
e728: c9 f8        CMP #$f8
e72a: 90 02        BCC +$02  [$e72e]
e72c: 38           SEC
e72d: 60           RTS
e72e: 85 40        STA $40     ;; Ok, sprite is on-screen and visible
e730: 86 1f        STX $1f
e732: bd 0d 6f     LDA $6f0d,X ; Being talked to? Yes, branch
e735: 30 3e        BMI +$3e  [$e775]
e737: bd 01 6f     LDA $6f01,X ; Not moving? Always face front and walk in place
e73a: 29 40        AND #$40
e73c: d0 0b        BNE +$0b  [$e749]
e73e: bd 00 6f     LDA $6f00,X ; Bats always "face front" too and walk in place
e741: c9 3a        CMP #$3a
e743: 90 0a        BCC +$0a  [$e74f]
e745: c9 3f        CMP #$3f
e747: b0 06        BCS +$06  [$e74f]
e749: a5 f0        LDA $f0
e74b: 4a           LSR
e74c: 4c 5a e7     JMP $e75a
e74f: c9 57        CMP #$57
e751: f0 f6        BEQ +$f6  [$e749]
e753: bd 06 6f     LDA $6f06,X ; Walking frame depends on fine position
e756: 1d 07 6f     ORA $6f07,X
e759: 0a           ASL
e75a: 29 08        AND #$08
e75c: 18           CLC
e75d: 7d 0e 6f     ADC $6f0e,X
e760: 85 10        STA $10
e762: bd 0f 6f     LDA $6f0f,X
e765: 69 00        ADC #$00
e767: 85 11        STA $11
e769: 8a           TXA
e76a: 18           CLC
e76b: 69 10        ADC #$10
e76d: 85 12        STA $12
e76f: 20 01 e3     JSR $e301   ; Setup 2x2 sprite at ($40,$41) with (tiles+$12) & flags at p[$10]
e772: a6 1f        LDX $1f
e774: 60           RTS
e775: 29 7f        AND #$7f    ; Being talked to => face player
e777: 9d 0d 6f     STA $6f0d,X
e77a: 8a           TXA
e77b: 18           CLC
e77c: 69 10        ADC #$10
e77e: 85 12        STA $12
e780: a5 33        LDA $33
e782: 4a           LSR
e783: b0 18        BCS +$18  [$e79d]
e785: 4a           LSR
e786: b0 0f        BCS +$0f  [$e797]
e788: 4a           LSR
e789: b0 06        BCS +$06  [$e791]
e78b: a9 db        LDA #$db
e78d: a2 e7        LDX #$e7
e78f: d0 10        BNE +$10  [$e7a1]
e791: a9 cb        LDA #$cb
e793: a2 e7        LDX #$e7
e795: d0 0a        BNE +$0a  [$e7a1]
e797: a9 ab        LDA #$ab
e799: a2 e7        LDX #$e7
e79b: d0 04        BNE +$04  [$e7a1]
e79d: a9 bb        LDA #$bb
e79f: a2 e7        LDX #$e7
e7a1: 85 10        STA $10
e7a3: 86 11        STX $11
e7a5: 20 01 e3     JSR $e301   ; Setup 2x2 sprite at ($40,$41) with (tiles+$12) & flags at p[$10]
e7a8: a6 1f        LDX $1f
e7aa: 60           RTS

; Flags for sprite tiles. TL, BL, TR, BR, then the same for the other step
;  +00 = tile delta
;  +01 = sprite flags
e7ab: 09 42 0b 43 08 42 0a 43 0d 42 0f 43 0c 42 0e 43  ; facing right
e7bb: 08 02 0a 03 09 02 0b 03 0c 02 0e 03 0d 02 0f 03  ; facing left
e7cb: 04 02 06 03 05 02 07 03 04 02 07 43 05 02 06 43  ; facing up
e7db: 00 02 02 03 01 02 03 03 00 02 03 43 01 02 02 43  ; facing down

; Load sprite structs for map ($48) into $6f00-ef
e7eb: a9 00        LDA #$00
e7ed: 85 1e        STA $1e
e7ef: a9 6f        LDA #$6f
e7f1: 85 1f        STA $1f
e7f3: a9 0f        LDA #$0f
e7f5: 85 1b        STA $1b
e7f7: a9 00        LDA #$00
e7f9: 85 1d        STA $1d
e7fb: a5 48        LDA $48
e7fd: 0a           ASL
e7fe: 26 1d        ROL $1d
e800: 0a           ASL
e801: 26 1d        ROL $1d
e803: 0a           ASL
e804: 26 1d        ROL $1d
e806: 0a           ASL
e807: 26 1d        ROL $1d
e809: a4 1d        LDY $1d
e80b: 85 1c        STA $1c
e80d: 06 1c        ASL $1c
e80f: 26 1d        ROL $1d
e811: 18           CLC
e812: 65 1c        ADC $1c
e814: 85 1c        STA $1c
e816: 98           TYA
e817: 65 1d        ADC $1d
e819: 69 b4        ADC #$b4
e81b: 85 1d        STA $1d
e81d: a9 00        LDA #$00
e81f: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
e822: a0 00        LDY #$00
e824: b1 1c        LDA ($1c),Y
e826: 20 3b e8     JSR $e83b  ; Create in-map sprite struct at p[$1e] for sprite p[$1c]
e829: a5 1c        LDA $1c
e82b: 18           CLC
e82c: 69 03        ADC #$03
e82e: 85 1c        STA $1c
e830: a5 1d        LDA $1d
e832: 69 00        ADC #$00
e834: 85 1d        STA $1d
e836: c6 1b        DEC $1b
e838: d0 e8        BNE +$e8  [$e822]
e83a: 60           RTS

; Create in-map sprite struct at p[$1e] for sprite p[$1c]
e83b: a0 0a        LDY #$0a
e83d: 91 1e        STA ($1e),Y
e83f: a0 00        LDY #$00
e841: aa           TAX
e842: bd 00 62     LDA $6200,X   ; sprite visible?
e845: 29 01        AND #$01
e847: f0 01        BEQ +$01  [$e84a]
e849: 8a           TXA
e84a: 91 1e        STA ($1e),Y
e84c: c8           INY
e84d: b1 1c        LDA ($1c),Y
e84f: 85 16        STA $16
e851: 29 c0        AND #$c0
e853: 91 1e        STA ($1e),Y
e855: c8           INY
e856: b1 1c        LDA ($1c),Y
e858: 85 17        STA $17
e85a: a5 16        LDA $16
e85c: 29 3f        AND #$3f
e85e: 91 1e        STA ($1e),Y
e860: a0 04        LDY #$04
e862: 91 1e        STA ($1e),Y
e864: a5 17        LDA $17
e866: 29 3f        AND #$3f
e868: a0 03        LDY #$03
e86a: 91 1e        STA ($1e),Y
e86c: a0 05        LDY #$05
e86e: 91 1e        STA ($1e),Y
e870: a0 06        LDY #$06
e872: a9 00        LDA #$00
e874: 91 1e        STA ($1e),Y
e876: c8           INY
e877: 91 1e        STA ($1e),Y
e879: c8           INY
e87a: 91 1e        STA ($1e),Y
e87c: c8           INY
e87d: 91 1e        STA ($1e),Y
e87f: a0 0b        LDY #$0b
e881: 91 1e        STA ($1e),Y
e883: c8           INY
e884: 91 1e        STA ($1e),Y
e886: c8           INY
e887: 91 1e        STA ($1e),Y
e889: a0 0e        LDY #$0e
e88b: a9 db        LDA #$db
e88d: 91 1e        STA ($1e),Y
e88f: c8           INY
e890: a9 e7        LDA #$e7
e892: 91 1e        STA ($1e),Y
e894: a5 1e        LDA $1e
e896: 18           CLC
e897: 69 10        ADC #$10
e899: 85 1e        STA $1e
e89b: 60           RTS

; Upload ending background!
e89c: a9 00        LDA #$00
e89e: 8d 01 20     STA $2001
e8a1: 8d 15 40     STA $4015
e8a4: a9 00        LDA #$00
e8a6: 85 10        STA $10
e8a8: a9 a8        LDA #$a8
e8aa: 85 11        STA $11
e8ac: a2 08        LDX #$08
e8ae: a9 0b        LDA #$0b
e8b0: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
e8b3: a9 00        LDA #$00
e8b5: 20 5a e9     JSR $e95a  ; Upload X<<8 (min 256) bytes from p[$10] to VRAM starting at A<<8
e8b8: a2 04        LDX #$04
e8ba: a9 20        LDA #$20
e8bc: 20 5a e9     JSR $e95a  ; Upload X<<8 (min 256) bytes from p[$10] to VRAM starting at A<<8
e8bf: a9 b0        LDA #$b0
e8c1: 85 11        STA $11
e8c3: a2 04        LDX #$04
e8c5: 20 67 e9     JSR $e967  ; Upload X<<8 (min 256-Y) bytes from p[$10] to VRAM
e8c8: 4c 8e e9     JMP $e98e  ; Load font into VRAM at offset $0800

; Load prologue/ship game background
e8cb: a9 00        LDA #$00
e8cd: 8d 01 20     STA $2001
e8d0: 8d 15 40     STA $4015
e8d3: a9 00        LDA #$00
e8d5: 85 10        STA $10
e8d7: a9 b4        LDA #$b4
e8d9: 85 11        STA $11
e8db: a2 08        LDX #$08
e8dd: a9 0b        LDA #$0b
e8df: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
e8e2: a9 00        LDA #$00
e8e4: 20 5a e9     JSR $e95a  ; Upload X<<8 (min 256) bytes from p[$10] to VRAM starting at A<<8
e8e7: a2 04        LDX #$04
e8e9: a9 20        LDA #$20
e8eb: 20 5a e9     JSR $e95a  ; Upload X<<8 (min 256) bytes from p[$10] to VRAM starting at A<<8
e8ee: a9 bc        LDA #$bc
e8f0: 85 11        STA $11
e8f2: a2 04        LDX #$04
e8f4: 20 67 e9     JSR $e967  ; Upload X<<8 (min 256-Y) bytes from p[$10] to VRAM
e8f7: 4c 8e e9     JMP $e98e  ; Load font into VRAM at offset $0800

e8fa: 20 9f ea     JSR $ea9f   ; Load menu screen tiles and palettes
e8fd: 4c b9 ea     JMP $eab9   ; Load battle sprite tiles for classes 0-5 and palettes

; Load battle $6a with BG $53
e900: 20 28 ea     JSR $ea28   ; Load battle tiles and palettes (battle $6a, bg $53)
e903: 4c e1 ea     JMP $eae1   ; Load battle sprite tiles and palettes

; Load menu screen & sprites
e906: 20 9f ea     JSR $ea9f   ; Load menu screen tiles and palettes
e909: 4c e1 ea     JMP $eae1   ; Load battle sprite tiles and palettes

; Load shop tiles, font, palettes, type, and battle sprites
e90c: 20 02 ea     JSR $ea02   ; Load shop tiles, font, palettes, and $66=type
e90f: 4c e1 ea     JMP $eae1   ; Load battle sprite tiles and palettes

; Load map tiles ($49) and sprites for map ($48)
e912: a9 02        LDA #$02
e914: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
e917: 20 2e e9     JSR $e92e  ; Upload lead warrior map sprite
e91a: 20 75 e9     JSR $e975  ; Upload map tiles ($49) and font
e91d: 4c 9e e9     JMP $e99e  ; Load sprite graphics for map $48

; Upload world map tiles and sprites
e920: a9 02        LDA #$02
e922: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
e925: 20 4b e9     JSR $e94b  ; Upload world map tiles
e928: 20 2e e9     JSR $e92e  ; Upload lead warrior map sprite
e92b: 4c 40 e9     JMP $e940  ; Upload world map sprites (airship, ship, bridge, canal, etc)

; Upload lead warrior map sprite
e92e: a9 00        LDA #$00
e930: 85 10        STA $10
e932: ad 00 61     LDA $6100
e935: 09 90        ORA #$90
e937: 85 11        STA $11
e939: a2 01        LDX #$01
e93b: a9 10        LDA #$10
e93d: 4c 5a e9     JMP $e95a  ; Upload X<<8 (min 256) bytes from p[$10] to VRAM starting at A<<8

; Upload world map sprites (airship, ship, bridge, canal, etc)
e940: a9 9c        LDA #$9c
e942: 85 11        STA $11
e944: a2 06        LDX #$06
e946: a9 11        LDA #$11
e948: 4c 5a e9     JMP $e95a  ; Upload X<<8 (min 256) bytes from p[$10] to VRAM starting at A<<8

; Upload 0x1000 bytes from $8000 to VRAM 0000
e94b: a9 00        LDA #$00
e94d: 85 10        STA $10
e94f: a9 80        LDA #$80
e951: 85 11        STA $11
e953: a2 10        LDX #$10
e955: a9 00        LDA #$00
e957: 4c 5a e9     JMP $e95a  ; Upload X<<8 (min 256) bytes from p[$10] to VRAM starting at A<<8

; Upload X<<8 (min 256) bytes from p[$10] to VRAM starting at A<<8
e95a: ac 02 20     LDY $2002  ; clear v-blank flag?
e95d: 8d 06 20     STA $2006  ; set vram address?
e960: a9 00        LDA #$00
e962: 8d 06 20     STA $2006
; Upload X<<8 (min 256) bytes from p[$10] to VRAM
e965: a0 00        LDY #$00   ; copy the tileset?
; Upload X<<8 (min 256-Y) bytes from p[$10] to VRAM
e967: b1 10        LDA ($10),Y
e969: 8d 07 20     STA $2007
e96c: c8           INY
e96d: d0 f8        BNE +$f8  [$e967]
e96f: e6 11        INC $11
e971: ca           DEX
e972: d0 f3        BNE +$f3  [$e967]
e974: 60           RTS

; Upload map tiles ($49) and font
e975: a9 03        LDA #$03
e977: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
e97a: a9 00        LDA #$00
e97c: 85 10        STA $10
e97e: a5 49        LDA $49
e980: 0a           ASL
e981: 0a           ASL
e982: 0a           ASL
e983: 09 80        ORA #$80
e985: 85 11        STA $11
e987: a9 00        LDA #$00
e989: a2 08        LDX #$08
e98b: 20 5a e9     JSR $e95a  ; Upload X<<8 (min 256) bytes from p[$10] to VRAM starting at A<<8

; Load font into VRAM at offset $0800
e98e: a9 09        LDA #$09
e990: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
e993: a9 88        LDA #$88
e995: 85 11        STA $11
e997: a2 08        LDX #$08
e999: a9 08        LDA #$08
e99b: 4c 5a e9     JMP $e95a  ; Upload X<<8 (min 256) bytes from p[$10] to VRAM starting at A<<8

; Load sprite graphics for map $48
e99e: ad 02 20     LDA $2002
e9a1: a9 11        LDA #$11
e9a3: 8d 06 20     STA $2006
e9a6: a9 00        LDA #$00
e9a8: 8d 06 20     STA $2006
e9ab: a9 00        LDA #$00
e9ad: 85 15        STA $15
e9af: a5 48        LDA $48
e9b1: 0a           ASL
e9b2: 26 15        ROL $15
e9b4: 0a           ASL
e9b5: 26 15        ROL $15
e9b7: 0a           ASL
e9b8: 26 15        ROL $15
e9ba: 0a           ASL
e9bb: 26 15        ROL $15
e9bd: 85 14        STA $14
e9bf: a4 15        LDY $15
e9c1: 06 14        ASL $14
e9c3: 26 15        ROL $15
e9c5: 18           CLC
e9c6: 65 14        ADC $14
e9c8: 85 14        STA $14
e9ca: 98           TYA
e9cb: 65 15        ADC $15
e9cd: 69 b4        ADC #$b4
e9cf: 85 15        STA $15
e9d1: a0 00        LDY #$00
e9d3: a9 00        LDA #$00
e9d5: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
e9d8: b1 14        LDA ($14),Y
e9da: aa           TAX
e9db: bd 00 ae     LDA $ae00,X
e9de: 18           CLC
e9df: 69 a2        ADC #$a2
e9e1: 85 11        STA $11
e9e3: a9 00        LDA #$00
e9e5: 85 10        STA $10
e9e7: a9 02        LDA #$02
e9e9: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
e9ec: 98           TYA
e9ed: 48           PHA
e9ee: a0 00        LDY #$00
e9f0: b1 10        LDA ($10),Y
e9f2: 8d 07 20     STA $2007
e9f5: c8           INY
e9f6: d0 f8        BNE +$f8  [$e9f0]
e9f8: 68           PLA
e9f9: 18           CLC
e9fa: 69 03        ADC #$03
e9fc: a8           TAY
e9fd: c9 2d        CMP #$2d
e9ff: 90 d2        BCC +$d2  [$e9d3]
ea01: 60           RTS

; Load shop tiles, font, and palettes
ea02: a9 09        LDA #$09
ea04: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
ea07: a9 00        LDA #$00
ea09: 85 10        STA $10
ea0b: a9 80        LDA #$80
ea0d: 85 11        STA $11
ea0f: a9 00        LDA #$00
ea11: a2 08        LDX #$08
ea13: 20 5a e9     JSR $e95a  ; Upload X<<8 (min 256) bytes from p[$10] to VRAM starting at A<<8
ea16: 20 8e e9     JSR $e98e  ; Load font into VRAM at offset $0800
ea19: 20 42 eb     JSR $eb42  ; load palette for shop in $51 (and type into $66)
ea1c: a2 07        LDX #$07
ea1e: bd 74 eb     LDA $eb74,X
ea21: 9d c4 03     STA $03c4,X
ea24: ca           DEX
ea25: 10 f7        BPL +$f7  [$ea1e]
ea27: 60           RTS

; Load battle tiles and palettes (battle $6a, bg $53)
ea28: a9 00        LDA #$00
ea2a: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
ea2d: a6 53        LDX $53
ea2f: bd 00 b3     LDA $b300,X ; battle backdrop assignments?
ea32: 20 7a ea     JSR $ea7a  ; p[$10]=Battle tileset in A and set bank
ea35: a9 00        LDA #$00   ;; Upload battle backdrop
ea37: a2 01        LDX #$01
ea39: 20 5a e9     JSR $e95a  ; Upload X<<8 (min 256) bytes from p[$10] to VRAM starting at A<<8
ea3c: b1 10        LDA ($10),Y  ; Copy 0x20 extra bytes
ea3e: 8d 07 20     STA $2007
ea41: c8           INY
ea42: c0 20        CPY #$20
ea44: 90 f6        BCC +$f6  [$ea3c]
ea46: a5 6a        LDA $6a      ; p[$14] = battle indicated in $6a
ea48: 0a           ASL
ea49: 0a           ASL
ea4a: 0a           ASL
ea4b: 0a           ASL
ea4c: 85 14        STA $14
ea4e: a5 6a        LDA $6a
ea50: 29 7f        AND #$7f
ea52: 4a           LSR
ea53: 4a           LSR
ea54: 4a           LSR
ea55: 4a           LSR
ea56: 18           CLC
ea57: 69 84        ADC #$84
ea59: 85 15        STA $15
ea5b: a9 0b        LDA #$0b
ea5d: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
ea60: a0 00        LDY #$00   ;; Load tile set for the named battle
ea62: b1 14        LDA ($14),Y
ea64: 29 0f        AND #$0f
ea66: a0 20        LDY #$20
ea68: 85 6b        STA $6b
ea6a: 20 7a ea     JSR $ea7a  ; p[$10]=Battle tileset in A and set bank
ea6d: e6 11        INC $11
ea6f: a2 07        LDX #$07
ea71: 20 67 e9     JSR $e967  ; Upload X<<8 (min 256-Y) bytes from p[$10] to VRAM
ea74: 20 8e e9     JSR $e98e  ; Load font into VRAM at offset $0800
ea77: 4c 8d eb     JMP $eb8d  ; load backdrop and black-window palettes

; p[$10]=Battle tileset in A, and display the correct bank for it too
ea7a: 29 0f        AND #$0f
ea7c: c9 08        CMP #$08
ea7e: b0 0c        BCS +$0c  [$ea8c]
ea80: 0a           ASL
ea81: 0a           ASL
ea82: 0a           ASL
ea83: 09 80        ORA #$80
ea85: 85 11        STA $11
ea87: a9 07        LDA #$07
ea89: 4c 97 ea     JMP $ea97
ea8c: 29 07        AND #$07
ea8e: 0a           ASL
ea8f: 0a           ASL
ea90: 0a           ASL
ea91: 09 80        ORA #$80
ea93: 85 11        STA $11
ea95: a9 08        LDA #$08
ea97: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
ea9a: a9 00        LDA #$00
ea9c: 85 10        STA $10
ea9e: 60           RTS

; Load menu screen tiles and palettes
ea9f: 20 28 ea     JSR $ea28   ; Load battle tiles and palettes (battle $6a, bg $53)
eaa2: a9 0d        LDA #$0d
eaa4: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
eaa7: a2 02        LDX #$02
eaa9: a9 00        LDA #$00   ;; load menu screen tiles to VRAM 0600-07ff
eaab: 85 10        STA $10
eaad: a9 b6        LDA #$b6
eaaf: 85 11        STA $11
eab1: a9 06        LDA #$06
eab3: 20 5a e9     JSR $e95a  ; Upload X<<8 (min 256) bytes from p[$10] to VRAM starting at A<<8
eab6: 4c 29 eb     JMP $eb29  ; Load blue-window palette into $03ce-f?

; Load battle sprite tiles for classes 0-5 and palettes
eab9: a9 09        LDA #$09
eabb: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
eabe: ad 02 20     LDA $2002  ; clear v-blank flag
eac1: a9 10        LDA #$10
eac3: 8d 06 20     STA $2006
eac6: a9 00        LDA #$00
eac8: 8d 06 20     STA $2006
eacb: a9 90        LDA #$90
eacd: 85 11        STA $11
eacf: a9 00        LDA #$00
ead1: 85 10        STA $10
ead3: a2 0c        LDX #$0c
ead5: 20 65 e9     JSR $e965  ; Upload X<<8 (min 256) bytes from p[$10] to VRAM
ead8: a9 ac        LDA #$ac
eada: 85 11        STA $11
eadc: a2 04        LDX #$04
eade: 4c 13 eb     JMP $eb13

; Load battle sprite tiles and palettes
eae1: a9 09        LDA #$09
eae3: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
eae6: ad 02 20     LDA $2002  ; clear v-blank flag
eae9: a9 10        LDA #$10
eaeb: 8d 06 20     STA $2006
eaee: a9 00        LDA #$00
eaf0: 8d 06 20     STA $2006
eaf3: 85 10        STA $10
eaf5: ad 00 61     LDA $6100
eaf8: 20 1e eb     JSR $eb1e  ; Upload graphics for class A
eafb: ad 40 61     LDA $6140
eafe: 20 1e eb     JSR $eb1e  ; Upload graphics for class A
eb01: ad 80 61     LDA $6180
eb04: 20 1e eb     JSR $eb1e  ; Upload graphics for class A
eb07: ad c0 61     LDA $61c0
eb0a: 20 1e eb     JSR $eb1e  ; Upload graphics for class A
eb0d: a9 a8        LDA #$a8   ; Upload weapon/magic graphics
eb0f: 85 11        STA $11
eb11: a2 08        LDX #$08
eb13: 20 67 e9     JSR $e967  ; Upload X<<8 (min 256-Y) bytes from p[$10] to VRAM
eb16: 20 99 eb     JSR $eb99  ; Copy battle sprite palettes to $03d0-f
eb19: a9 0e        LDA #$0e
eb1b: 4c 03 fe     JMP $fe03  ; Show Bank in A in memory locations $8000-$bfff 

; Upload graphics for class A
eb1e: 0a           ASL
eb1f: 18           CLC
eb20: 69 90        ADC #$90
eb22: 85 11        STA $11
eb24: a2 02        LDX #$02
eb26: 4c 65 e9     JMP $e965  ; Upload X<<8 (min 256) bytes from p[$10] to VRAM

; Load blue-window palette into $03ce-f?
eb29: a9 01        LDA #$01
eb2b: d0 02        BNE +$02  [$eb2f]

; Load black-window palette into $03ce-f?
eb2d: a9 0f        LDA #$0f
eb2f: 8d ce 03     STA $03ce
eb32: a9 0f        LDA #$0f
eb34: 8d cc 03     STA $03cc
eb37: a9 00        LDA #$00
eb39: 8d cd 03     STA $03cd
eb3c: a9 30        LDA #$30
eb3e: 8d cf 03     STA $03cf
eb41: 60           RTS

; load palette for shop in $51 (and type into $66)
eb42: a9 00        LDA #$00
eb44: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
eb47: a6 51        LDX $51
eb49: bd b5 eb     LDA $ebb5,X
eb4c: 29 07        AND #$07
eb4e: 85 66        STA $66
eb50: 0a           ASL
eb51: 0a           ASL
eb52: 09 40        ORA #$40
eb54: 20 5a eb     JSR $eb5a  ; load battle backdrop palette in A into $03c0-4
eb57: 4c 29 eb     JMP $eb29  ; Load blue-window palette into $03ce-f?

; load battle backdrop palette in A into $03c0-4
eb5a: aa           TAX
eb5b: bd 00 b2     LDA $b200,X
eb5e: 8d c0 03     STA $03c0
eb61: bd 01 b2     LDA $b201,X
eb64: 8d c1 03     STA $03c1
eb67: bd 02 b2     LDA $b202,X
eb6a: 8d c2 03     STA $03c2
eb6d: bd 03 b2     LDA $b203,X
eb70: 8d c3 03     STA $03c3
eb73: 60           RTS

; general shop palettes
eb74: 0f 00 04 30  .DB $0f, $00, $04, $30
eb78: 0f 00 0a 30  .DB $0f, $00, $0a, $30

; load battle backdrop palette specified in $53 into $03c0-4
eb7c: a9 00        LDA #$00
eb7e: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
eb81: a6 53        LDX $53
eb83: bd 00 b3     LDA $b300,X
eb86: 29 0f        AND #$0f
eb88: 0a           ASL
eb89: 0a           ASL
eb8a: 4c 5a eb     JMP $eb5a  ; load battle backdrop palette in A into $03c0-4

; load backdrop and black-window palettes
eb8d: 20 7c eb     JSR $eb7c  ; load battle backdrop palette specified in $53 into $03c0-4
eb90: 4c 2d eb     JMP $eb2d  ; Load black-window palette into $03ce-f?

; (unused) load backdrop and blue-window palettes
eb93: 20 7c eb     JSR $eb7c  ; load battle backdrop palette specified in $53 into $03c0-4
eb96: 4c 29 eb     JMP $eb29  ; Load blue-window palette into $03ce-f?

; Copy battle sprite palettes to $03d0-f
eb99: a2 0f        LDX #$0f
eb9b: bd a5 eb     LDA $eba5,X
eb9e: 9d d0 03     STA $03d0,X
eba1: ca           DEX
eba2: 10 f7        BPL +$f7  [$eb9b]
eba4: 60           RTS

; Character battle palettes
eba5: 0f 28 18 21  .DB $0f, $28, $18, $21 ; yellow/black
eba9: 0f 16 30 36  .DB $0f, $16, $30, $36 ; red/white
ebad: 0f 30 22 12  .DB $0f, $30, $22, $12 ; unused (replaced as needed)
ebb1: 0f 30 10 00  .DB $0f, $30, $10, $00 ; cursor

; Shop types
ebb5: 00 00 00 00 00 00 00 00 00 00
ebbf: 01 01 01 01 01 01 01 01 01 01 01
ebca: 02 02 02 02 02 02 02 02 02 02
ebd4: 03 03 03 03 03 03 03 03 03 03
ebde: 04 04 04 04 04 04 04 04 04 04
ebe8: 05 05 05 05 05 05 05 05 05 05
ebf2: 06 06 06 06 06 06 06 06 06
ebfb: 07

ebfc: 60           RTS

; Set warrior A sprite at ($40,$41)
ebfd: aa           TAX
ebfe: 4a           LSR
ebff: 85 10        STA $10
ec01: bd 00 61     LDA $6100,X
ec04: a8           TAY
ec05: b9 a4 ec     LDA $eca4,Y
ec08: 85 11        STA $11
ec0a: bd 01 61     LDA $6101,X
ec0d: f0 10        BEQ +$10  [$ec1f]
ec0f: c9 01        CMP #$01
ec11: f0 e9        BEQ +$e9  [$ebfc]
ec13: c9 03        CMP #$03
ec15: f0 06        BEQ +$06  [$ec1d]
ec17: a9 03        LDA #$03
ec19: 85 11        STA $11
ec1b: d0 00        BNE +$00  [$ec1d]
ec1d: a9 14        LDA #$14
ec1f: 18           CLC
ec20: 65 10        ADC $10
ec22: 85 10        STA $10

; Setup 2x3 sprite at ($40,$41) with tiles $10 to $10+5 and flags $11
ec24: a6 26        LDX $26
ec26: a5 40        LDA $40
ec28: 9d 03 02     STA $0203,X
ec2b: 9d 0b 02     STA $020b,X
ec2e: 9d 13 02     STA $0213,X
ec31: 18           CLC
ec32: 69 08        ADC #$08
ec34: 9d 07 02     STA $0207,X
ec37: 9d 0f 02     STA $020f,X
ec3a: 9d 17 02     STA $0217,X
ec3d: a5 41        LDA $41
ec3f: 9d 00 02     STA $0200,X
ec42: 9d 04 02     STA $0204,X
ec45: 18           CLC
ec46: 69 08        ADC #$08
ec48: 9d 08 02     STA $0208,X
ec4b: 9d 0c 02     STA $020c,X
ec4e: 18           CLC
ec4f: 69 08        ADC #$08
ec51: 9d 10 02     STA $0210,X
ec54: 9d 14 02     STA $0214,X
ec57: a5 10        LDA $10
ec59: 9d 01 02     STA $0201,X
ec5c: 18           CLC
ec5d: 69 01        ADC #$01
ec5f: 9d 05 02     STA $0205,X
ec62: 18           CLC
ec63: 69 01        ADC #$01
ec65: 9d 09 02     STA $0209,X
ec68: 18           CLC
ec69: 69 01        ADC #$01
ec6b: 9d 0d 02     STA $020d,X
ec6e: 18           CLC
ec6f: 69 01        ADC #$01
ec71: 9d 11 02     STA $0211,X
ec74: 18           CLC
ec75: 69 01        ADC #$01
ec77: 9d 15 02     STA $0215,X
ec7a: a5 11        LDA $11
ec7c: 9d 02 02     STA $0202,X
ec7f: 9d 06 02     STA $0206,X
ec82: 9d 0a 02     STA $020a,X
ec85: 9d 0e 02     STA $020e,X
ec88: 9d 12 02     STA $0212,X
ec8b: 9d 16 02     STA $0216,X
ec8e: 8a           TXA
ec8f: 18           CLC
ec90: 69 18        ADC #$18
ec92: 85 26        STA $26
ec94: 60           RTS

; Setup 2x2 sprite #$f0 in 4 adjacent tiles with palette 3
ec95: a9 b0        LDA #$b0
ec97: 85 10        STA $10
ec99: a9 ec        LDA #$ec
ec9b: 85 11        STA $11
ec9d: a9 f0        LDA #$f0
ec9f: 85 12        STA $12
eca1: 4c 01 e3     JMP $e301   ; Setup 2x2 sprite at ($40,$41) with (tiles+$12) & flags at p[$10]

; Character battle palette selection
eca4: 01 00 00 01  .DB $01, $00, $00, $01
eca8: 01 00 01 01  .DB $01, $00, $01, $01
ecac: 00 01 01 00  .DB $00, $01, $01, $00

; 2x2 sprite in 4 adjacent tiles with palette 3
ecb0: 00 03 02 03 01 03 03 03 ff 

; $10-12 = price of item in A
ecb9: 0a           ASL        ; p[$12] = price of this item
ecba: 85 12        STA $12
ecbc: a9 5e        LDA #$5e
ecbe: 2a           ROL
ecbf: 85 13        STA $13
ecc1: a9 0d        LDA #$0d
ecc3: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
ecc6: a0 00        LDY #$00   ; $10-12 = price
ecc8: b1 12        LDA ($12),Y
ecca: 85 10        STA $10
eccc: c8           INY
eccd: b1 12        LDA ($12),Y
eccf: 85 11        STA $11
ecd1: a9 00        LDA #$00
ecd3: 85 12        STA $12
ecd5: a9 0e        LDA #$0e
ecd7: 4c 03 fe     JMP $fe03  ; Show Bank in A in memory locations $8000-$bfff 

;; Draw weapon/armor names for weapon/armor screen
ecda: a9 00        LDA #$00
ecdc: 8d 19 03     STA $0319
ecdf: a9 01        LDA #$01
ece1: 85 37        STA $37
ece3: a9 1b        LDA #$1b
ece5: a6 66        LDX $66
ece7: e0 18        CPX #$18
ece9: f0 02        BEQ +$02  [$eced]
eceb: a9 43        LDA #$43
eced: 85 67        STA $67
ecef: a9 03        LDA #$03
ecf1: 85 3f        STA $3f
ecf3: a9 00        LDA #$00
ecf5: 48           PHA         ; start of loop
ecf6: aa           TAX
ecf7: 0a           ASL
ecf8: a8           TAY
ecf9: b9 72 ed     LDA $ed72,Y ; Load screen position into $3a,$3b
ecfc: 85 3a        STA $3a
ecfe: b9 73 ed     LDA $ed73,Y
ed01: 85 3b        STA $3b
ed03: a9 0a        LDA #$0a
ed05: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
ed08: a9 ff        LDA #$ff   ; Clear "E-"
ed0a: 8d 10 03     STA $0310
ed0d: 8d 11 03     STA $0311
ed10: bd 00 03     LDA $0300,X ; Anything here?
ed13: 85 12        STA $12
ed15: 29 7f        AND #$7f
ed17: d0 19        BNE +$19  [$ed32]
ed19: a9 ff        LDA #$ff    ; No, clear name
ed1b: 8d 12 03     STA $0312
ed1e: 8d 13 03     STA $0313
ed21: 8d 14 03     STA $0314
ed24: 8d 15 03     STA $0315
ed27: 8d 16 03     STA $0316
ed2a: 8d 17 03     STA $0317
ed2d: 8d 18 03     STA $0318
ed30: d0 27        BNE +$27  [$ed59]
ed32: 18           CLC         ; Yes, load name
ed33: 65 67        ADC $67
ed35: 0a           ASL
ed36: aa           TAX
ed37: bd 00 b7     LDA $b700,X
ed3a: 85 10        STA $10
ed3c: bd 01 b7     LDA $b701,X
ed3f: 85 11        STA $11
ed41: a0 06        LDY #$06
ed43: b1 10        LDA ($10),Y
ed45: 99 12 03     STA $0312,Y
ed48: 88           DEY
ed49: 10 f8        BPL +$f8  [$ed43]
ed4b: a5 12        LDA $12
ed4d: 10 0a        BPL +$0a  [$ed59]
ed4f: a9 c7        LDA #$c7   ; Equipped? Load "E-"
ed51: 8d 10 03     STA $0310
ed54: a9 c2        LDA #$c2
ed56: 8d 11 03     STA $0311
ed59: a9 10        LDA #$10
ed5b: 85 3e        STA $3e
ed5d: 20 36 de     JSR $de36   ; Output string at p[$3e] in bank $57 to ($3a,$3b)
ed60: 68           PLA
ed61: 18           CLC         ; inc counter and loop
ed62: 69 01        ADC #$01
ed64: c9 10        CMP #$10
ed66: 90 8d        BCC +$8d  [$ecf5]
ed68: a9 0e        LDA #$0e    ; restore bank and return
ed6a: 85 57        STA $57
ed6c: 85 58        STA $58
ed6e: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
ed71: 60           RTS

; Screen positions (X,Y) of each warpon/armor name on the weapon/armor screen
ed72: 0a 07 14 07 0a 09 14 09 0a 0d 14 0d 0a 0f 14 0f
ed82: 0a 13 14 13 0a 15 14 15 0a 19 14 19 0a 1b 14 1b

; Clear weapon/armor stats (which in $66) for all warriors, and ret to bank 14
ed92: a9 0c        LDA #$0c
ed94: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
ed97: a5 66        LDA $66
ed99: 85 61        STA $61
ed9b: a6 61        LDX $61
ed9d: 29 c0        AND #$c0
ed9f: 85 17        STA $17
eda1: bd 00 61     LDA $6100,X
eda4: 10 03        BPL +$03  [$eda9]
eda6: 20 d2 ed     JSR $edd2   ; Remove Damage/Hit%/Evade bonus for item in A (type in $66, warrior in $17)
eda9: bd 01 61     LDA $6101,X
edac: 10 03        BPL +$03  [$edb1]
edae: 20 d2 ed     JSR $edd2   ; Remove Damage/Hit%/Evade bonus for item in A (type in $66, warrior in $17)
edb1: bd 02 61     LDA $6102,X
edb4: 10 03        BPL +$03  [$edb9]
edb6: 20 d2 ed     JSR $edd2   ; Remove Damage/Hit%/Evade bonus for item in A (type in $66, warrior in $17)
edb9: bd 03 61     LDA $6103,X
edbc: 10 03        BPL +$03  [$edc1]
edbe: 20 d2 ed     JSR $edd2   ; Remove Damage/Hit%/Evade bonus for item in A (type in $66, warrior in $17)
edc1: 20 b7 ee     JSR $eeb7   ; Zero Warrior $17's Absorb/Elem Resist, or Damage for BB/MA (which in $66)
edc4: a5 61        LDA $61
edc6: 18           CLC
edc7: 69 40        ADC #$40
edc9: 85 61        STA $61
edcb: 90 ce        BCC +$ce  [$ed9b]
edcd: a9 0e        LDA #$0e
edcf: 4c 03 fe     JMP $fe03  ; Show Bank in A in memory locations $8000-$bfff 

; Remove Damage/Hit%/Evade bonus for item in A (type in $66, warrior in $17)
edd2: 38           SEC
edd3: e9 01        SBC #$01
edd5: 0a           ASL
edd6: 0a           ASL
edd7: a4 66        LDY $66
edd9: c0 18        CPY #$18
eddb: d0 23        BNE +$23  [$ee00]
eddd: 0a           ASL
edde: 85 10        STA $10
ede0: a9 00        LDA #$00
ede2: 69 80        ADC #$80
ede4: 85 11        STA $11
ede6: a6 17        LDX $17
ede8: a0 00        LDY #$00
edea: bd 21 61     LDA $6121,X
eded: 38           SEC
edee: f1 10        SBC ($10),Y
edf0: 9d 21 61     STA $6121,X
edf3: c8           INY
edf4: bd 20 61     LDA $6120,X
edf7: 38           SEC
edf8: f1 10        SBC ($10),Y
edfa: 9d 20 61     STA $6120,X
edfd: a6 61        LDX $61
edff: 60           RTS
ee00: 18           CLC
ee01: 69 40        ADC #$40
ee03: 85 10        STA $10
ee05: a9 00        LDA #$00
ee07: 69 81        ADC #$81
ee09: 85 11        STA $11
ee0b: a6 17        LDX $17
ee0d: a0 00        LDY #$00
ee0f: bd 23 61     LDA $6123,X
ee12: 18           CLC
ee13: 71 10        ADC ($10),Y
ee15: 9d 23 61     STA $6123,X
ee18: a6 61        LDX $61
ee1a: 60           RTS

; Apply weapon/armor equips (which in $66)
ee1b: a9 0c        LDA #$0c
ee1d: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
ee20: a5 66        LDA $66
ee22: 85 61        STA $61
ee24: a6 61        LDX $61
ee26: 29 c0        AND #$c0
ee28: 85 17        STA $17
ee2a: bd 00 61     LDA $6100,X
ee2d: 10 03        BPL +$03  [$ee32]
ee2f: 20 5b ee     JSR $ee5b
ee32: bd 01 61     LDA $6101,X
ee35: 10 03        BPL +$03  [$ee3a]
ee37: 20 5b ee     JSR $ee5b
ee3a: bd 02 61     LDA $6102,X
ee3d: 10 03        BPL +$03  [$ee42]
ee3f: 20 5b ee     JSR $ee5b
ee42: bd 03 61     LDA $6103,X
ee45: 10 03        BPL +$03  [$ee4a]
ee47: 20 5b ee     JSR $ee5b
ee4a: 20 db ee     JSR $eedb  ; Do BB/Ma bare bonuses
ee4d: a5 61        LDA $61
ee4f: 18           CLC
ee50: 69 40        ADC #$40
ee52: 85 61        STA $61
ee54: 90 ce        BCC +$ce  [$ee24]
ee56: a9 0e        LDA #$0e
ee58: 4c 03 fe     JMP $fe03  ; Show Bank in A in memory locations $8000-$bfff 
ee5b: 38           SEC          ;; We have an equipped weapon/armor, process it
ee5c: e9 01        SBC #$01
ee5e: 0a           ASL
ee5f: 0a           ASL
ee60: a4 66        LDY $66
ee62: c0 18        CPY #$18
ee64: d0 23        BNE +$23  [$ee89]
ee66: 0a           ASL          ;; It's a weapon
ee67: 85 10        STA $10
ee69: a9 00        LDA #$00
ee6b: 69 80        ADC #$80
ee6d: 85 11        STA $11
ee6f: a6 17        LDX $17
ee71: a0 00        LDY #$00
ee73: bd 21 61     LDA $6121,X ; Add weapon Hit%
ee76: 18           CLC
ee77: 71 10        ADC ($10),Y
ee79: 9d 21 61     STA $6121,X
ee7c: c8           INY
ee7d: bd 20 61     LDA $6120,X ; Add weapon Damage
ee80: 18           CLC
ee81: 71 10        ADC ($10),Y
ee83: 9d 20 61     STA $6120,X
ee86: a6 61        LDX $61
ee88: 60           RTS
ee89: 18           CLC         ;; It's armor
ee8a: 69 40        ADC #$40
ee8c: 85 10        STA $10
ee8e: a9 00        LDA #$00
ee90: 69 81        ADC #$81
ee92: 85 11        STA $11
ee94: a6 17        LDX $17
ee96: a0 00        LDY #$00
ee98: bd 23 61     LDA $6123,X ; Subtract armor Evade%
ee9b: 38           SEC
ee9c: f1 10        SBC ($10),Y
ee9e: 9d 23 61     STA $6123,X
eea1: c8           INY
eea2: bd 22 61     LDA $6122,X ; Add armor Absorb
eea5: 18           CLC
eea6: 71 10        ADC ($10),Y
eea8: 9d 22 61     STA $6122,X
eeab: bd 24 61     LDA $6124,X ; Apply elemental resistances
eeae: c8           INY
eeaf: 11 10        ORA ($10),Y
eeb1: 9d 24 61     STA $6124,X
eeb4: a6 61        LDX $61
eeb6: 60           RTS

; Zero Warrior $17's Absorb/Elem Resist, or Damage for BB/MA (which in $66)
eeb7: a5 66        LDA $66
eeb9: c9 18        CMP #$18
eebb: d0 13        BNE +$13  [$eed0]
eebd: a6 17        LDX $17
eebf: bd 00 61     LDA $6100,X
eec2: c9 02        CMP #$02
eec4: f0 04        BEQ +$04  [$eeca]
eec6: c9 08        CMP #$08
eec8: d0 05        BNE +$05  [$eecf]
eeca: a9 00        LDA #$00
eecc: 9d 20 61     STA $6120,X
eecf: 60           RTS
eed0: a9 00        LDA #$00
eed2: a6 17        LDX $17
eed4: 9d 22 61     STA $6122,X
eed7: 9d 24 61     STA $6124,X
eeda: 60           RTS

; Do BB/Ma bare bonuses
eedb: a6 17        LDX $17
eedd: bd 00 61     LDA $6100,X
eee0: c9 02        CMP #$02
eee2: f0 04        BEQ +$04  [$eee8]
eee4: c9 08        CMP #$08
eee6: d0 20        BNE +$20  [$ef08]
eee8: a5 66        LDA $66
eeea: c9 18        CMP #$18
eeec: d0 1b        BNE +$1b  [$ef09]
eeee: bd 20 61     LDA $6120,X
eef1: f0 0b        BEQ +$0b  [$eefe]
eef3: bd 10 61     LDA $6110,X
eef6: 4a           LSR
eef7: 7d 20 61     ADC $6120,X   ; BUG: no CLC
eefa: 9d 20 61     STA $6120,X
eefd: 60           RTS
eefe: bd 26 61     LDA $6126,X
ef01: 18           CLC
ef02: 69 01        ADC #$01
ef04: 0a           ASL
ef05: 9d 20 61     STA $6120,X
ef08: 60           RTS
ef09: bd 22 61     LDA $6122,X
ef0c: d0 fa        BNE +$fa  [$ef08]
ef0e: bd 26 61     LDA $6126,X
ef11: 18           CLC
ef12: 69 01        ADC #$01
ef14: 9d 22 61     STA $6122,X
ef17: 60           RTS

ef18: a9 01        LDA #$01
ef1a: 85 38        STA $38
ef1c: a9 03        LDA #$03
ef1e: 85 39        STA $39
ef20: a9 1e        LDA #$1e
ef22: 85 3c        STA $3c
ef24: a9 13        LDA #$13
ef26: 85 3d        STA $3d
ef28: a9 0e        LDA #$0e
ef2a: 85 57        STA $57
ef2c: 20 63 e0     JSR $e063   ; Draw $3c by $3d window at ($38,$39), slowly if $37, and ($3a,$3b)=($38,$39)+(1,2)
ef2f: e6 3b        INC $3b
ef31: e6 3a        INC $3a
ef33: e6 3a        INC $3a
ef35: a2 00        LDX #$00
ef37: a0 01        LDY #$01
ef39: b9 20 60     LDA $6020,Y
ef3c: f0 05        BEQ +$05  [$ef43]
ef3e: 98           TYA
ef3f: 9d 00 03     STA $0300,X
ef42: e8           INX
ef43: c8           INY
ef44: c0 12        CPY #$12
ef46: 90 f1        BCC +$f1  [$ef39]
ef48: c0 16        CPY #$16
ef4a: 90 f7        BCC +$f7  [$ef43]
ef4c: c0 1c        CPY #$1c
ef4e: 90 e9        BCC +$e9  [$ef39]
ef50: e0 00        CPX #$00
ef52: d0 04        BNE +$04  [$ef58]
ef54: 38           SEC
ef55: 60           RTS
ef56: 18           CLC
ef57: 60           RTS
ef58: 86 63        STX $63
ef5a: a9 00        LDA #$00
ef5c: 9d 00 03     STA $0300,X
ef5f: a9 00        LDA #$00
ef61: 85 62        STA $62
ef63: a6 62        LDX $62
ef65: bd 00 03     LDA $0300,X
ef68: f0 ec        BEQ +$ec  [$ef56]
ef6a: 0a           ASL
ef6b: aa           TAX
ef6c: a9 0e        LDA #$0e
ef6e: 85 58        STA $58
ef70: a9 0a        LDA #$0a
ef72: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
ef75: bd 00 b7     LDA $b700,X
ef78: 85 10        STA $10
ef7a: bd 01 b7     LDA $b701,X
ef7d: 85 11        STA $11
ef7f: a0 06        LDY #$06
ef81: b1 10        LDA ($10),Y
ef83: 99 20 03     STA $0320,Y
ef86: 88           DEY
ef87: 10 f8        BPL +$f8  [$ef81]
ef89: a9 00        LDA #$00
ef8b: 8d 27 03     STA $0327
ef8e: 8a           TXA
ef8f: 4a           LSR
ef90: c9 16        CMP #$16
ef92: 90 1a        BCC +$1a  [$efae]
ef94: aa           TAX
ef95: bd 20 60     LDA $6020,X
ef98: 85 10        STA $10
ef9a: a9 0e        LDA #$0e
ef9c: 85 58        STA $58
ef9e: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
efa1: 20 66 8e     JSR $8e66  ; p[$3e] = 2-digit number in $10
efa4: a5 5e        LDA $5e
efa6: 8d 25 03     STA $0325
efa9: a5 5f        LDA $5f
efab: 8d 26 03     STA $0326
efae: a9 20        LDA #$20
efb0: 85 3e        STA $3e
efb2: a9 03        LDA #$03
efb4: 85 3f        STA $3f
efb6: a5 62        LDA $62
efb8: 0a           ASL
efb9: aa           TAX
efba: bd cc ef     LDA $efcc,X
efbd: 85 3a        STA $3a
efbf: bd cd ef     LDA $efcd,X
efc2: 85 3b        STA $3b
efc4: 20 36 de     JSR $de36   ; Output string at p[$3e] in bank $57 to ($3a,$3b)
efc7: e6 62        INC $62
efc9: 4c 63 ef     JMP $ef63

; Positions of each item on the item screen
efcc: 04 06
efce: 0d 06
efd0: 16 06
efd2: 04 08
efd4: 0d 08
efd6: 16 08
efd8: 04 0a
efda: 0d 0a
efdc: 16 0a
efde: 04 0c
efe0: 0d 0c
efe2: 16 0c
efe4: 04 0e
efe6: 0d 0e
efe8: 16 0e
efea: 04 10
efec: 0d 10
efee: 16 10
eff0: 04 12
eff2: 0d 12
eff4: 16 12
eff6: 04 14
eff8: 0d 14
effa: 16 14

; Move all weapons/armors to the start of their 4-bytes (which in $66)
effc: a0 04        LDY #$04
effe: a6 66        LDX $66
f000: 20 0e f0     JSR $f00e
f003: 8a           TXA
f004: 18           CLC
f005: 69 40        ADC #$40
f007: 29 fc        AND #$fc
f009: aa           TAX
f00a: 88           DEY
f00b: d0 f3        BNE +$f3  [$f000]
f00d: 60           RTS
f00e: bd 00 61     LDA $6100,X
f011: 85 10        STA $10
f013: bd 01 61     LDA $6101,X
f016: 85 11        STA $11
f018: bd 02 61     LDA $6102,X
f01b: 85 12        STA $12
f01d: bd 03 61     LDA $6103,X
f020: 85 13        STA $13
f022: a9 00        LDA #$00
f024: 9d 00 61     STA $6100,X
f027: 9d 01 61     STA $6101,X
f02a: 9d 02 61     STA $6102,X
f02d: 9d 03 61     STA $6103,X
f030: a5 10        LDA $10
f032: f0 04        BEQ +$04  [$f038]
f034: 9d 00 61     STA $6100,X
f037: e8           INX
f038: a5 11        LDA $11
f03a: f0 04        BEQ +$04  [$f040]
f03c: 9d 00 61     STA $6100,X
f03f: e8           INX
f040: a5 12        LDA $12
f042: f0 04        BEQ +$04  [$f048]
f044: 9d 00 61     STA $6100,X
f047: e8           INX
f048: a5 13        LDA $13
f04a: f0 03        BEQ +$03  [$f04f]
f04c: 9d 00 61     STA $6100,X
f04f: 60           RTS

; second of a double-character
f050: ff b7 ab a8 ff b1 a4 ff b1 a8 b6 b5 b8 ff b2 ff
f060: aa a4 b6 ac ff b5 b6 a5 a8 ba a8 b5 b2 b7 a6 b7
f070: b1 a7 b1 ac a8 b6 a7 a4 b0 a9 ff a8 ba ff a8 b0
f080: 92 ff a9 b2 af b3 bc a4 8a a8 ff b5 b2 ac ff ab
f090: a8 b7 ac a4 a6 af a8 af a8 b6 ff af a8 a7 ac c3
; First of a double-character
f0a0: a8 ff b7 ab b6 ac ff b7 a4 b5 ff a8 b2 a7 b7 b1
f0b0: b1 a8 a8 ff b2 a4 ac ff b9 ff b0 b2 ff b6 ff a4
f0c0: a8 b1 b2 ab b6 a4 a8 ab ff ff b5 af b2 aa a6 b2
f0d0: 90 bc b2 b5 af ff ff a6 96 b7 a9 b8 bc b7 af ff
f0e0: b1 ac b5 ba a4 a4 ba ac a5 b5 b8 ff aa ff af c3

f0f0: 0a fe 20 00 bc 68 4c 03 fe 00 00 00 00 00 0a 03

; PRNG table #2
f100: 1f a6 de ba cc 12 7d 74 1b f3 b4 88 f8 52 f4 07
f110: 90 ab b3 bd aa 55 28 bc 8a 6d 0e c4 83 a9 3b 76
f120: 20 7c 09 92 fd 4a a8 f0 61 e3 f2 69 6c bb 38 c3
f130: ae b7 43 84 78 23 7b 9b 2d db 3e 91 cf 02 2a b6
f140: 86 ee 9c 8e b8 6f 1a 57 05 e9 73 31 d2 d9 1d fb
f150: 94 9d b1 0a 3a 11 5a 47 95 2c 44 e0 6a 8c 5b 7a
f160: a7 5d 36 70 e5 c7 49 dc 68 97 d8 66 a3 0f b0 9f
f170: 03 d6 77 16 13 30 25 3c 10 17 ad 98 6b 2f d7 a1
f180: ff a4 eb 51 fe 27 8d 93 d5 3d f6 08 75 e1 a5 46
f190: 63 f5 4d da 32 af 40 37 d3 c0 89 67 06 21 6e 81
f1a0: b5 a0 4f 0c 2e e7 1c 58 85 e8 59 ce 35 cb 1e c6
f1b0: 2b 9a e6 dd f1 ec 96 ca ac 00 50 c9 4c fc 14 7e
f1c0: 56 80 d0 79 bf 29 87 48 24 19 c5 22 71 7f 72 0d
f1d0: cd 8f be 3f 9e 34 ed 53 54 04 62 a2 c2 41 5e 82
f1e0: 4b 26 5c 42 65 99 4e 60 8b f7 0b 33 df d1 64 c8
f1f0: c1 01 ef f9 fa e4 5f 18 b9 b2 39 d4 15 e2 ea 45

f200: 4c 8d f2     JMP $f28d   ; Load battle data ($6a) and start battle
f203: 4c 3e f2     JMP $f23e
f206: 4c 68 f2     JMP $f268
f209: 4c 84 f2     JMP $f284   ; Jump to address p[$96] in bank $6bb1
f20c: 4c 20 f6     JMP $f620
f20f: 4c b3 f6     JMP $f6b3
f212: 4c c3 f6     JMP $f6c3
f215: 4c 00 f7     JMP $f700
f218: 4c 1c f7     JMP $f71c
f21b: 4c 64 f7     JMP $f764
f21e: 4c a1 f4     JMP $f4a1   ; $ff=$68b7 and wait for V-blank
f221: 4c 9e f8     JMP $f89e
f224: 4c 21 f9     JMP $f921
f227: 4c e7 fc     JMP $fce7
f22a: 4c 40 f4     JMP $f440
f22d: 4c 59 fa     JMP $fa59
f230: 4c cf fc     JMP $fccf   ; Swap $90-f with $6d74-83

f233: a5 97        LDA $97
f235: 8d 06 20     STA $2006
f238: a5 96        LDA $96
f23a: 8d 06 20     STA $2006
f23d: 60           RTS

f23e: a5 99        LDA $99
f240: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
f243: 20 00 fe     JSR $fe00   ; wait for V-blank
f246: 20 33 f2     JSR $f233
f249: a0 00        LDY #$00
f24b: a6 98        LDX $98
f24d: b1 94        LDA ($94),Y
f24f: 8d 07 20     STA $2007
f252: c8           INY
f253: ca           DEX
f254: d0 f7        BNE +$f7  [$f24d]
f256: ad b1 6b     LDA $6bb1
f259: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
f25c: a9 00        LDA #$00
f25e: 8d 01 20     STA $2001
f261: 8d 05 20     STA $2005
f264: 8d 05 20     STA $2005
f267: 60           RTS

f268: 20 00 fe     JSR $fe00   ; wait for V-blank
f26b: 20 33 f2     JSR $f233
f26e: ad 07 20     LDA $2007
f271: a0 00        LDY #$00
f273: a6 98        LDX $98
f275: ad 07 20     LDA $2007
f278: 91 94        STA ($94),Y
f27a: c8           INY
f27b: ca           DEX
f27c: d0 f7        BNE +$f7  [$f275]
f27e: ad b1 6b     LDA $6bb1
f281: 4c 03 fe     JMP $fe03  ; Show Bank in A in memory locations $8000-$bfff 

; Jump to address p[$96] in bank $6bb1
f284: 8d b1 6b     STA $6bb1
f287: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
f28a: 6c 96 00     JMP ($0096)

; Load battle data ($6a) and start battle
f28d: 20 00 fe     JSR $fe00   ; wait for V-blank
f290: a9 02        LDA #$02    ; upload sprites
f292: 8d 14 40     STA $4014
f295: a9 0b        LDA #$0b
f297: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
f29a: ad 6a 00     LDA $006a  ;; Load battle data for battle ($6a)
f29d: 29 7f        AND #$7f
f29f: a2 00        LDX #$00
f2a1: 86 9b        STX $9b
f2a3: 0a           ASL
f2a4: 26 9b        ROL $9b
f2a6: 0a           ASL
f2a7: 26 9b        ROL $9b
f2a9: 0a           ASL
f2aa: 26 9b        ROL $9b
f2ac: 0a           ASL
f2ad: 26 9b        ROL $9b
f2af: 85 9a        STA $9a
f2b1: 18           CLC
f2b2: a5 9b        LDA $9b
f2b4: 69 84        ADC #$84
f2b6: 85 9b        STA $9b
f2b8: a2 10        LDX #$10
f2ba: a0 00        LDY #$00
f2bc: b1 9a        LDA ($9a),Y
f2be: 99 84 6d     STA $6d84,Y
f2c1: c8           INY
f2c2: ca           DEX
f2c3: d0 f7        BNE +$f7  [$f2bc]
f2c5: a9 00        LDA #$00
f2c7: 8d 37 00     STA $0037
f2ca: 20 f1 f3     JSR $f3f1   ; Display off
f2cd: ad 02 20     LDA $2002
f2d0: a2 20        LDX #$20    ;; Clear screen (tile 0)
f2d2: a9 00        LDA #$00
f2d4: 20 bf f3     JSR $f3bf   ; VRAM address = XA
f2d7: a0 08        LDY #$08
f2d9: a2 00        LDX #$00
f2db: 8d 07 20     STA $2007
f2de: ca           DEX
f2df: d0 fa        BNE +$fa  [$f2db]
f2e1: 88           DEY
f2e2: d0 f5        BNE +$f5  [$f2d9]
f2e4: a9 01        LDA #$01
f2e6: 8d 38 00     STA $0038
f2e9: a2 10        LDX #$10
f2eb: a0 12        LDY #$12
f2ed: 20 e2 f3     JSR $f3e2   ; Display off and draw X by Y window at ($38,A), slowly if $37, and ($3a,$3b)=($38,A)+(1,2)
f2f0: a9 11        LDA #$11
f2f2: 8d 38 00     STA $0038
f2f5: a9 01        LDA #$01
f2f7: a2 08        LDX #$08
f2f9: a0 12        LDY #$12
f2fb: 20 e2 f3     JSR $f3e2   ; Display off and draw X by Y window at ($38,A), slowly if $37, and ($3a,$3b)=($38,A)+(1,2)
f2fe: a9 19        LDA #$19
f300: a2 15        LDX #$15
f302: 20 c6 f3     JSR $f3c6   ; Draw 6 by 7 window at (A,X), slowly if $37, and ($3a,$3b)=(A,X)+(1,2)
f305: a2 0f        LDX #$0f
f307: 20 c6 f3     JSR $f3c6   ; Draw 6 by 7 window at (A,X), slowly if $37, and ($3a,$3b)=(A,X)+(1,2)
f30a: a2 09        LDX #$09
f30c: 20 c6 f3     JSR $f3c6   ; Draw 6 by 7 window at (A,X), slowly if $37, and ($3a,$3b)=(A,X)+(1,2)
f30f: a2 03        LDX #$03
f311: 20 c6 f3     JSR $f3c6   ; Draw 6 by 7 window at (A,X), slowly if $37, and ($3a,$3b)=(A,X)+(1,2)
f314: a2 23        LDX #$23    ;; Set palette map
f316: a9 c0        LDA #$c0
f318: 20 bf f3     JSR $f3bf   ; VRAM address = XA
f31b: a2 00        LDX #$00
f31d: bd 00 f4     LDA $f400,X
f320: 8d 07 20     STA $2007
f323: e8           INX
f324: e0 40        CPX #$40
f326: d0 f5        BNE +$f5  [$f31d]
f328: a2 00        LDX #$00    ; Copy palettes
f32a: bd c0 03     LDA $03c0,X
f32d: 9d 34 6d     STA $6d34,X
f330: e8           INX
f331: e0 20        CPX #$20
f333: d0 f5        BNE +$f5  [$f32a]
f335: a9 0c        LDA #$0c
f337: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
f33a: ad 8e 6d     LDA $6d8e
f33d: a0 04        LDY #$04
f33f: 20 71 f4     JSR $f471  ; Load battle palettes
f342: ad 8f 6d     LDA $6d8f
f345: a0 08        LDY #$08
f347: 20 71 f4     JSR $f471  ; Load battle palettes
f34a: a9 42        LDA #$42
f34c: a0 00        LDY #$00
f34e: 20 85 f3     JSR $f385  ; Set a row of the battle backdrop (Row Y at VRAM A+$2000)
f351: a9 62        LDA #$62
f353: a0 04        LDY #$04
f355: 20 85 f3     JSR $f385  ; Set a row of the battle backdrop (Row Y at VRAM A+$2000)
f358: a9 82        LDA #$82
f35a: a0 08        LDY #$08
f35c: 20 85 f3     JSR $f385  ; Set a row of the battle backdrop (Row Y at VRAM A+$2000)
f35f: a9 a2        LDA #$a2
f361: a0 0c        LDY #$0c
f363: 20 85 f3     JSR $f385  ; Set a row of the battle backdrop (Row Y at VRAM A+$2000)
f366: 20 00 fe     JSR $fe00   ; wait for V-blank
f369: a2 0f        LDX #$0f    ; Clear tile 0xff
f36b: a9 f0        LDA #$f0
f36d: 20 bf f3     JSR $f3bf   ; VRAM address = XA
f370: a9 00        LDA #$00
f372: a2 10        LDX #$10
f374: 8d 07 20     STA $2007
f377: ca           DEX
f378: d0 fa        BNE +$fa  [$f374]
f37a: a9 0b        LDA #$0b
f37c: 8d b1 6b     STA $6bb1
f37f: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
f382: 4c 00 9a     JMP $9a00  ; Start of battle?

; Set a row of the battle backdrop (Row Y at VRAM A+$2000)
f385: a2 20        LDX #$20
f387: 20 bf f3     JSR $f3bf   ; VRAM address = XA
f38a: 84 9a        STY $9a
f38c: a0 0e        LDY #$0e
f38e: 84 9b        STY $9b
f390: 20 a0 f3     JSR $f3a0
f393: ad 07 20     LDA $2007
f396: ad 07 20     LDA $2007
f399: a0 06        LDY #$06
f39b: 84 9b        STY $9b
f39d: 4c a0 f3     JMP $f3a0
f3a0: a2 00        LDX #$00
f3a2: bd b1 f3     LDA $f3b1,X
f3a5: 18           CLC
f3a6: 65 9a        ADC $9a
f3a8: 8d 07 20     STA $2007
f3ab: e8           INX
f3ac: e4 9b        CPX $9b
f3ae: d0 f2        BNE +$f2  [$f3a2]
f3b0: 60           RTS

; Battle backdrop pattern
f3b1: 01 02 03 04 03 04 01 02 01 02 03 04 03 04 

; VRAM address = XA
f3bf: 8e 06 20     STX $2006
f3c2: 8d 06 20     STA $2006
f3c5: 60           RTS

; Draw 6 by 7 window at (A,X), slowly if $37, and ($3a,$3b)=(A,X)+(1,2)
f3c6: 8d 38 00     STA $0038
f3c9: 8e 39 00     STX $0039
f3cc: 48           PHA
f3cd: 8a           TXA
f3ce: 48           PHA
f3cf: a2 06        LDX #$06
f3d1: 8e 3c 00     STX $003c
f3d4: e8           INX
f3d5: 8e 3d 00     STX $003d
f3d8: 20 f1 f3     JSR $f3f1   ; Display off
f3db: 20 06 c0     JSR $c006   ; Draw $3c by $3d window at ($38,$39), slowly if $37, and ($3a,$3b)=($38,$39)+(1,2)
f3de: 68           PLA
f3df: aa           TAX
f3e0: 68           PLA
f3e1: 60           RTS

; Display off and draw X by Y window at ($38,A), slowly if $37, and ($3a,$3b)=($38,A)+(1,2)
f3e2: 8d 39 00     STA $0039
f3e5: 8e 3c 00     STX $003c
f3e8: 8c 3d 00     STY $003d
f3eb: 20 f1 f3     JSR $f3f1   ; Display off
f3ee: 4c 06 c0     JMP $c006   ; Draw $3c by $3d window at ($38,$39), slowly if $37, and ($3a,$3b)=($38,$39)+(1,2)

; Display off
f3f1: a9 00        LDA #$00
f3f3: 8d ff 00     STA $00ff
f3f6: 8d fe 00     STA $00fe
f3f9: 8d 00 20     STA $2000
f3fc: 8d 01 20     STA $2001
f3ff: 60           RTS

; Battle generic palette map
f400: 3f 0f 0f 0f 3f 0f ff ff
f408: 33 00 00 00 33 00 ff ff
f410: 33 00 00 00 33 00 ff ff
f418: 33 00 00 00 33 00 ff ff
f420: f3 f0 f0 f0 f3 f0 ff ff
f428: ff ff ff ff ff ff ff ff
f430: ff ff ff ff ff ff ff ff
f438: 0f 0f 0f 0f 0f 0f 0f 0f

f440: a9 06        LDA #$06
f442: 8d 14 6d     STA $6d14
f445: 20 60 f4     JSR $f460
f448: 20 e7 fc     JSR $fce7
f44b: 29 03        AND #$03
f44d: 8d 05 20     STA $2005
f450: 20 e7 fc     JSR $fce7
f453: 29 03        AND #$03
f455: 8d 05 20     STA $2005
f458: ce 14 6d     DEC $6d14
f45b: d0 e8        BNE +$e8  [$f445]
f45d: 4c 85 f4     JMP $f485   ; Do something sound-related?
f460: 20 6b f4     JSR $f46b
f463: a2 00        LDX #$00
f465: ea           NOP
f466: ea           NOP
f467: ea           NOP
f468: ca           DEX
f469: d0 fa        BNE +$fa  [$f465]
f46b: 20 00 fe     JSR $fe00   ; wait for V-blank
f46e: 4c 93 f4     JMP $f493

; Load battle palettes
f471: 0a           ASL
f472: 0a           ASL
f473: aa           TAX
f474: a9 04        LDA #$04
f476: 85 9a        STA $9a
f478: bd 20 8f     LDA $8f20,X
f47b: 99 34 6d     STA $6d34,Y
f47e: e8           INX
f47f: c8           INY
f480: c6 9a        DEC $9a
f482: d0 f4        BNE +$f4  [$f478]
f484: 60           RTS

; Do something sound-related?
f485: ad b8 68     LDA $68b8
f488: 8d 01 20     STA $2001
f48b: a9 00        LDA #$00
f48d: 8d 05 20     STA $2005
f490: 8d 05 20     STA $2005
f493: ad 4b 00     LDA $004b
f496: 10 06        BPL +$06  [$f49e]
f498: ad a7 6b     LDA $6ba7
f49b: 8d 4b 00     STA $004b
f49e: 4c 09 c0     JMP $c009   ; Start music or play current notes

; $ff=$68b7 and wait for V-blank
f4a1: ad b7 68     LDA $68b7
f4a4: 8d ff 00     STA $00ff
f4a7: 4c 00 fe     JMP $fe00   ; wait for V-blank

f4aa: a9 40        LDA #$40
f4ac: 85 8a        STA $8a
f4ae: a9 22        LDA #$22
f4b0: 85 8b        STA $8b
f4b2: a9 1e        LDA #$1e
f4b4: 85 88        STA $88
f4b6: a9 69        LDA #$69
f4b8: 85 89        STA $89
f4ba: a9 0c        LDA #$0c
f4bc: 8d b9 68     STA $68b9
f4bf: 20 e5 f4     JSR $f4e5   ; Upload 0x19 bytes at p[$88] to VRAM address p[$8a]
f4c2: a5 88        LDA $88
f4c4: 18           CLC
f4c5: 69 20        ADC #$20
f4c7: 85 88        STA $88
f4c9: a5 89        LDA $89
f4cb: 69 00        ADC #$00
f4cd: 85 89        STA $89
f4cf: a5 8a        LDA $8a
f4d1: 18           CLC
f4d2: 69 20        ADC #$20
f4d4: 85 8a        STA $8a
f4d6: a5 8b        LDA $8b
f4d8: 69 00        ADC #$00
f4da: 85 8b        STA $8b
f4dc: 20 85 f4     JSR $f485   ; Do something sound-related?
f4df: ce b9 68     DEC $68b9
f4e2: d0 db        BNE +$db  [$f4bf]
f4e4: 60           RTS

; Upload 0x19 bytes at p[$88] to VRAM address p[$8a]
f4e5: 20 a1 f4     JSR $f4a1   ; $ff=$68b7 and wait for V-blank
f4e8: a5 8b        LDA $8b
f4ea: 8d 06 20     STA $2006
f4ed: a5 8a        LDA $8a
f4ef: 8d 06 20     STA $2006
f4f2: a0 00        LDY #$00
f4f4: b1 88        LDA ($88),Y
f4f6: 8d 07 20     STA $2007
f4f9: c8           INY
f4fa: c0 19        CPY #$19
f4fc: d0 f6        BNE +$f6  [$f4f4]
f4fe: 60           RTS

f4ff: a9 a0        LDA #$a0
f501: 85 8a        STA $8a
f503: a9 23        LDA #$23
f505: 85 8b        STA $8b
f507: a9 7e        LDA #$7e
f509: 85 88        STA $88
f50b: a9 6a        LDA #$6a
f50d: 85 89        STA $89
f50f: a9 06        LDA #$06
f511: 8d b9 68     STA $68b9
f514: 20 e5 f4     JSR $f4e5   ; Upload 0x19 bytes at p[$88] to VRAM address p[$8a]
f517: 20 29 f5     JSR $f529
f51a: 20 e8 f4     JSR $f4e8
f51d: 20 29 f5     JSR $f529
f520: 20 85 f4     JSR $f485   ; Do something sound-related?
f523: ce b9 68     DEC $68b9
f526: d0 ec        BNE +$ec  [$f514]
f528: 60           RTS
f529: a5 88        LDA $88
f52b: 38           SEC
f52c: e9 20        SBC #$20
f52e: 85 88        STA $88
f530: a5 89        LDA $89
f532: e9 00        SBC #$00
f534: 85 89        STA $89
f536: a5 8a        LDA $8a
f538: 38           SEC
f539: e9 20        SBC #$20
f53b: 85 8a        STA $8a
f53d: a5 8b        LDA $8b
f53f: e9 00        SBC #$00
f541: 85 8b        STA $8b
f543: 60           RTS

f544: a9 00        LDA #$00
f546: 85 89        STA $89
f548: 98           TYA
f549: 0a           ASL
f54a: 26 89        ROL $89
f54c: 0a           ASL
f54d: 26 89        ROL $89
f54f: 0a           ASL
f550: 26 89        ROL $89
f552: 0a           ASL
f553: 26 89        ROL $89
f555: 0a           ASL
f556: 26 89        ROL $89
f558: 85 88        STA $88
f55a: 8a           TXA
f55b: 18           CLC
f55c: 65 88        ADC $88
f55e: 85 88        STA $88
f560: a9 00        LDA #$00
f562: 65 89        ADC $89
f564: 85 89        STA $89
f566: 18           CLC
f567: a9 1e        LDA #$1e
f569: 65 88        ADC $88
f56b: aa           TAX
f56c: a9 69        LDA #$69
f56e: 65 89        ADC $89
f570: a8           TAY
f571: 60           RTS

f572: a0 00        LDY #$00
f574: ad b3 68     LDA $68b3
f577: 91 88        STA ($88),Y
f579: ae a1 6a     LDX $6aa1
f57c: ca           DEX
f57d: ca           DEX
f57e: c8           INY
f57f: ad b4 68     LDA $68b4
f582: 91 88        STA ($88),Y
f584: c8           INY
f585: ca           DEX
f586: d0 fa        BNE +$fa  [$f582]
f588: ad b5 68     LDA $68b5
f58b: 91 88        STA ($88),Y
f58d: a5 88        LDA $88
f58f: 18           CLC
f590: 69 20        ADC #$20
f592: 85 88        STA $88
f594: a5 89        LDA $89
f596: 69 00        ADC #$00
f598: 85 89        STA $89
f59a: 60           RTS

f59b: ae 9f 6a     LDX $6a9f
f59e: ac a0 6a     LDY $6aa0
f5a1: 20 44 f5     JSR $f544
f5a4: 86 88        STX $88
f5a6: 84 89        STY $89
f5a8: a9 f7        LDA #$f7
f5aa: 8d b3 68     STA $68b3
f5ad: a9 f8        LDA #$f8
f5af: 8d b4 68     STA $68b4
f5b2: a9 f9        LDA #$f9
f5b4: 8d b5 68     STA $68b5
f5b7: 20 72 f5     JSR $f572
f5ba: ad a2 6a     LDA $6aa2
f5bd: 38           SEC
f5be: e9 02        SBC #$02
f5c0: 8d b6 68     STA $68b6
f5c3: a9 fa        LDA #$fa
f5c5: 8d b3 68     STA $68b3
f5c8: a9 ff        LDA #$ff
f5ca: 8d b4 68     STA $68b4
f5cd: a9 fb        LDA #$fb
f5cf: 8d b5 68     STA $68b5
f5d2: 20 72 f5     JSR $f572
f5d5: ce b6 68     DEC $68b6
f5d8: d0 f8        BNE +$f8  [$f5d2]
f5da: a9 fc        LDA #$fc
f5dc: 8d b3 68     STA $68b3
f5df: a9 fd        LDA #$fd
f5e1: 8d b4 68     STA $68b4
f5e4: a9 fe        LDA #$fe
f5e6: 8d b5 68     STA $68b5
f5e9: 20 72 f5     JSR $f572
f5ec: 60           RTS

f5ed: a5 8c        LDA $8c
f5ef: 18           CLC
f5f0: 69 05        ADC #$05
f5f2: 85 8c        STA $8c
f5f4: a5 8d        LDA $8d
f5f6: 69 00        ADC #$00
f5f8: 85 8d        STA $8d
f5fa: 60           RTS

f5fb: a0 00        LDY #$00
f5fd: b1 8c        LDA ($8c),Y
f5ff: 99 9e 6a     STA $6a9e,Y
f602: c8           INY
f603: c0 05        CPY #$05
f605: d0 f6        BNE +$f6  [$f5fd]
f607: 60           RTS

f608: 20 fb f5     JSR $f5fb
f60b: 20 9b f5     JSR $f59b
f60e: 20 ed f5     JSR $f5ed
f611: a0 00        LDY #$00
f613: b1 8c        LDA ($8c),Y
f615: f0 f0        BEQ +$f0  [$f607]
f617: 20 fb f5     JSR $f5fb
f61a: 20 ab f9     JSR $f9ab
f61d: 4c 0e f6     JMP $f60e

f620: a0 00        LDY #$00
f622: a9 00        LDA #$00
f624: 99 1e 69     STA $691e,Y
f627: 99 9e 69     STA $699e,Y
f62a: c8           INY
f62b: d0 f7        BNE +$f7  [$f624]
f62d: a9 fd        LDA #$fd
f62f: 99 1f 69     STA $691f,Y
f632: c8           INY
f633: c0 17        CPY #$17
f635: d0 f8        BNE +$f8  [$f62f]
f637: a9 fc        LDA #$fc
f639: 8d 1f 69     STA $691f
f63c: 8d 2f 69     STA $692f
f63f: a9 fe        LDA #$fe
f641: 8d 2e 69     STA $692e
f644: 8d 36 69     STA $6936
f647: 60           RTS

f648: 20 08 f6     JSR $f608
f64b: 20 aa f4     JSR $f4aa
f64e: ee a3 6a     INC $6aa3
f651: a5 8c        LDA $8c
f653: 85 8e        STA $8e
f655: a5 8d        LDA $8d
f657: 85 8f        STA $8f
f659: 60           RTS

f65a: ad a3 6a     LDA $6aa3
f65d: 8d a4 6a     STA $6aa4
f660: ce a4 6a     DEC $6aa4
f663: 20 20 f6     JSR $f620
f666: a9 ba        LDA #$ba
f668: 85 8c        STA $8c
f66a: a9 68        LDA #$68
f66c: 85 8d        STA $8d
f66e: a9 00        LDA #$00
f670: 8d a3 6a     STA $6aa3
f673: ad a3 6a     LDA $6aa3
f676: cd a4 6a     CMP $6aa4
f679: f0 09        BEQ +$09  [$f684]
f67b: 20 08 f6     JSR $f608
f67e: ee a3 6a     INC $6aa3
f681: 4c 73 f6     JMP $f673
f684: 20 ff f4     JSR $f4ff
f687: a5 8c        LDA $8c
f689: 85 8e        STA $8e
f68b: a5 8d        LDA $8d
f68d: 85 8f        STA $8f
f68f: 60           RTS

; push a drawable onto the drawing stack
f690: 98           TYA
f691: 48           PHA
f692: a0 00        LDY #$00
f694: b9 9e 6a     LDA $6a9e,Y
f697: 91 8e        STA ($8e),Y
f699: c8           INY
f69a: c0 05        CPY #$05
f69c: d0 f6        BNE +$f6  [$f694]
f69e: a5 8e        LDA $8e
f6a0: 18           CLC
f6a1: 69 05        ADC #$05
f6a3: 85 8e        STA $8e
f6a5: a5 8f        LDA $8f
f6a7: 69 00        ADC #$00
f6a9: 85 8f        STA $8f
f6ab: a9 00        LDA #$00
f6ad: a8           TAY
f6ae: 91 8e        STA ($8e),Y
f6b0: 68           PLA
f6b1: a8           TAY
f6b2: 60           RTS

f6b3: 29 ff        AND #$ff
f6b5: f0 0b        BEQ +$0b  [$f6c2]
f6b7: 8d a5 6a     STA $6aa5
f6ba: 20 5a f6     JSR $f65a
f6bd: ce a5 6a     DEC $6aa5
f6c0: d0 f8        BNE +$f8  [$f6ba]
f6c2: 60           RTS
f6c3: a0 05        LDY #$05
f6c5: b9 e3 f9     LDA $f9e3,Y
f6c8: 99 9d 6a     STA $6a9d,Y
f6cb: 88           DEY
f6cc: d0 f7        BNE +$f7  [$f6c5]
f6ce: 20 90 f6     JSR $f690   ; push a drawable onto the drawing stack
f6d1: ee 9e 6a     INC $6a9e
f6d4: ee 9f 6a     INC $6a9f
f6d7: ee 9f 6a     INC $6a9f
f6da: ce a0 6a     DEC $6aa0
f6dd: a0 00        LDY #$00
f6df: ee a0 6a     INC $6aa0
f6e2: ee a0 6a     INC $6aa0
f6e5: 98           TYA
f6e6: 20 9c f9     JSR $f99c
f6e9: ad b3 68     LDA $68b3
f6ec: 8d a1 6a     STA $6aa1
f6ef: ad b4 68     LDA $68b4
f6f2: 8d a2 6a     STA $6aa2
f6f5: 20 90 f6     JSR $f690   ; push a drawable onto the drawing stack
f6f8: c8           INY
f6f9: c0 04        CPY #$04
f6fb: d0 e2        BNE +$e2  [$f6df]
f6fd: 4c 48 f6     JMP $f648
f700: a0 00        LDY #$00
f702: a2 00        LDX #$00
f704: b9 1b fa     LDA $fa1b,Y
f707: 9d 9e 6a     STA $6a9e,X
f70a: e8           INX
f70b: e0 05        CPX #$05
f70d: d0 05        BNE +$05  [$f714]
f70f: 20 90 f6     JSR $f690   ; push a drawable onto the drawing stack
f712: a2 00        LDX #$00
f714: c8           INY
f715: c0 1e        CPY #$1e
f717: d0 eb        BNE +$eb  [$f704]
f719: 4c 48 f6     JMP $f648

f71c: 8e b3 68     STX $68b3
f71f: 8c b4 68     STY $68b4
f722: 0a           ASL         ; load window info
f723: 0a           ASL
f724: 0a           ASL
f725: a8           TAY
f726: a2 00        LDX #$00
f728: b9 e9 f9     LDA $f9e9,Y
f72b: 9d 9e 6a     STA $6a9e,X
f72e: e8           INX
f72f: c8           INY
f730: e0 05        CPX #$05
f732: d0 f4        BNE +$f4  [$f728]
f734: 20 90 f6     JSR $f690   ; push a drawable onto the drawing stack
f737: a2 00        LDX #$00
f739: b9 e9 f9     LDA $f9e9,Y ; load text info
f73c: 9d 9e 6a     STA $6a9e,X
f73f: e8           INX
f740: c8           INY
f741: e0 03        CPX #$03
f743: d0 f4        BNE +$f4  [$f739]
f745: ad b3 68     LDA $68b3
f748: 8d a1 6a     STA $6aa1
f74b: ad b4 68     LDA $68b4
f74e: 8d a2 6a     STA $6aa2
f751: 20 90 f6     JSR $f690   ; push a drawable onto the drawing stack
f754: 4c 48 f6     JMP $f648

f757: a0 00        LDY #$00
f759: a9 ff        LDA #$ff
f75b: 99 fa 6a     STA $6afa,Y
f75e: c8           INY
f75f: c0 80        CPY #$80
f761: d0 f8        BNE +$f8  [$f75b]
f763: 60           RTS

f764: a0 05        LDY #$05
f766: b9 10 fa     LDA $fa10,Y
f769: 99 9d 6a     STA $6a9d,Y
f76c: 88           DEY
f76d: d0 f7        BNE +$f7  [$f766]
f76f: 20 90 f6     JSR $f690   ; push a drawable onto the drawing stack
f772: 20 57 f7     JSR $f757
f775: ee 9e 6a     INC $6a9e
f778: ee 9f 6a     INC $6a9f
f77b: ee a0 6a     INC $6aa0
f77e: a9 00        LDA #$00
f780: 8d b5 68     STA $68b5
f783: ad 7a 6b     LDA $6b7a
f786: 20 97 f8     JSR $f897
f789: 18           CLC
f78a: 69 00        ADC #$00
f78c: 85 88        STA $88
f78e: a9 00        LDA #$00
f790: 69 63        ADC #$63
f792: 85 89        STA $89
f794: ad f8 6a     LDA $6af8
f797: d0 53        BNE +$53  [$f7ec]
f799: ad b5 68     LDA $68b5
f79c: 0a           ASL
f79d: 0a           ASL
f79e: a8           TAY
f79f: 0a           ASL
f7a0: 0a           ASL
f7a1: 0a           ASL
f7a2: aa           TAX
f7a3: a9 95        LDA #$95
f7a5: 9d fa 6a     STA $6afa,X
f7a8: ad b5 68     LDA $68b5
f7ab: 18           CLC
f7ac: 69 81        ADC #$81
f7ae: 9d fb 6a     STA $6afb,X
f7b1: 20 44 f8     JSR $f844
f7b4: a9 20        LDA #$20
f7b6: 18           CLC
f7b7: 6d b5 68     ADC $68b5
f7ba: a8           TAY
f7bb: b1 88        LDA ($88),Y
f7bd: 18           CLC
f7be: 69 80        ADC #$80
f7c0: 9d 06 6b     STA $6b06,X
f7c3: a9 00        LDA #$00
f7c5: 9d 07 6b     STA $6b07,X
f7c8: 8a           TXA
f7c9: 18           CLC
f7ca: 69 fa        ADC #$fa
f7cc: 8d a1 6a     STA $6aa1
f7cf: a9 00        LDA #$00
f7d1: 69 6a        ADC #$6a
f7d3: 8d a2 6a     STA $6aa2
f7d6: 20 90 f6     JSR $f690   ; push a drawable onto the drawing stack
f7d9: ee a0 6a     INC $6aa0
f7dc: ee a0 6a     INC $6aa0
f7df: ee b5 68     INC $68b5
f7e2: ad b5 68     LDA $68b5
f7e5: c9 04        CMP #$04
f7e7: d0 b0        BNE +$b0  [$f799]
f7e9: 4c 41 f8     JMP $f841
f7ec: ad b5 68     LDA $68b5
f7ef: 0a           ASL
f7f0: 0a           ASL
f7f1: a8           TAY
f7f2: 0a           ASL
f7f3: 0a           ASL
f7f4: 0a           ASL
f7f5: aa           TAX
f7f6: 98           TYA
f7f7: 18           CLC
f7f8: 69 10        ADC #$10
f7fa: a8           TAY
f7fb: a9 95        LDA #$95
f7fd: 9d fa 6a     STA $6afa,X
f800: ad b5 68     LDA $68b5
f803: 18           CLC
f804: 69 85        ADC #$85
f806: 9d fb 6a     STA $6afb,X
f809: 20 44 f8     JSR $f844
f80c: a9 24        LDA #$24
f80e: 18           CLC
f80f: 6d b5 68     ADC $68b5
f812: a8           TAY
f813: b1 88        LDA ($88),Y
f815: 18           CLC
f816: 69 80        ADC #$80
f818: 9d 06 6b     STA $6b06,X
f81b: a9 00        LDA #$00
f81d: 9d 07 6b     STA $6b07,X
f820: 8a           TXA
f821: 18           CLC
f822: 69 fa        ADC #$fa
f824: 8d a1 6a     STA $6aa1
f827: a9 00        LDA #$00
f829: 69 6a        ADC #$6a
f82b: 8d a2 6a     STA $6aa2
f82e: 20 90 f6     JSR $f690   ; push a drawable onto the drawing stack
f831: ee a0 6a     INC $6aa0
f834: ee a0 6a     INC $6aa0
f837: ee b5 68     INC $68b5
f83a: ad b5 68     LDA $68b5
f83d: c9 04        CMP #$04
f83f: d0 ab        BNE +$ab  [$f7ec]
f841: 4c 48 f6     JMP $f648
f844: a9 0e        LDA #$0e
f846: 9d fd 6a     STA $6afd,X
f849: 9d 00 6b     STA $6b00,X
f84c: 9d 03 6b     STA $6b03,X
f84f: b1 88        LDA ($88),Y
f851: d0 0d        BNE +$0d  [$f860]
f853: a9 10        LDA #$10
f855: 9d fd 6a     STA $6afd,X
f858: a9 04        LDA #$04
f85a: 9d fe 6a     STA $6afe,X
f85d: 4c 66 f8     JMP $f866
f860: 18           CLC
f861: 69 af        ADC #$af
f863: 9d fe 6a     STA $6afe,X
f866: c8           INY
f867: b1 88        LDA ($88),Y
f869: d0 0d        BNE +$0d  [$f878]
f86b: a9 10        LDA #$10
f86d: 9d 00 6b     STA $6b00,X
f870: a9 04        LDA #$04
f872: 9d 01 6b     STA $6b01,X
f875: 4c 7e f8     JMP $f87e
f878: 18           CLC
f879: 69 af        ADC #$af
f87b: 9d 01 6b     STA $6b01,X
f87e: c8           INY
f87f: b1 88        LDA ($88),Y
f881: d0 0d        BNE +$0d  [$f890]
f883: a9 10        LDA #$10
f885: 9d 03 6b     STA $6b03,X
f888: a9 04        LDA #$04
f88a: 9d 04 6b     STA $6b04,X
f88d: 4c 96 f8     JMP $f896
f890: 18           CLC
f891: 69 af        ADC #$af
f893: 9d 04 6b     STA $6b04,X
f896: 60           RTS
f897: 0a           ASL
f898: 0a           ASL
f899: 0a           ASL
f89a: 0a           ASL
f89b: 0a           ASL
f89c: 0a           ASL
f89d: 60           RTS
f89e: a0 05        LDY #$05
f8a0: b9 10 fa     LDA $fa10,Y
f8a3: 99 9d 6a     STA $6a9d,Y
f8a6: 88           DEY
f8a7: d0 f7        BNE +$f7  [$f8a0]
f8a9: 20 90 f6     JSR $f690   ; push a drawable onto the drawing stack
f8ac: 20 57 f7     JSR $f757
f8af: ee 9e 6a     INC $6a9e
f8b2: ee 9f 6a     INC $6a9f
f8b5: ee a0 6a     INC $6aa0
f8b8: a9 00        LDA #$00
f8ba: 8d b5 68     STA $68b5
f8bd: ad 7a 6b     LDA $6b7a
f8c0: 20 97 f8     JSR $f897
f8c3: aa           TAX
f8c4: ad b5 68     LDA $68b5
f8c7: 20 98 f8     JSR $f898
f8ca: a8           TAY
f8cb: a9 0e        LDA #$0e
f8cd: 99 fb 6a     STA $6afb,Y
f8d0: 99 ff 6a     STA $6aff,Y
f8d3: bd 18 61     LDA $6118,X
f8d6: f0 08        BEQ +$08  [$f8e0]
f8d8: 29 7f        AND #$7f
f8da: 18           CLC
f8db: 69 1b        ADC #$1b
f8dd: 4c e7 f8     JMP $f8e7
f8e0: a9 10        LDA #$10
f8e2: 99 fb 6a     STA $6afb,Y
f8e5: a9 07        LDA #$07
f8e7: 99 fc 6a     STA $6afc,Y
f8ea: bd 1c 61     LDA $611c,X
f8ed: f0 05        BEQ +$05  [$f8f4]
f8ef: 29 7f        AND #$7f
f8f1: 18           CLC
f8f2: 69 43        ADC #$43
f8f4: 99 00 6b     STA $6b00,Y
f8f7: a9 00        LDA #$00
f8f9: 99 01 6b     STA $6b01,Y
f8fc: 98           TYA
f8fd: 18           CLC
f8fe: 69 fa        ADC #$fa
f900: 8d a1 6a     STA $6aa1
f903: a9 00        LDA #$00
f905: 69 6a        ADC #$6a
f907: 8d a2 6a     STA $6aa2
f90a: 20 90 f6     JSR $f690   ; push a drawable onto the drawing stack
f90d: e8           INX
f90e: ee a0 6a     INC $6aa0
f911: ee a0 6a     INC $6aa0
f914: ee b5 68     INC $68b5
f917: ad b5 68     LDA $68b5
f91a: c9 04        CMP #$04
f91c: d0 a6        BNE +$a6  [$f8c4]
f91e: 4c 48 f6     JMP $f648
f921: a0 05        LDY #$05
f923: b9 15 fa     LDA $fa15,Y
f926: 99 9d 6a     STA $6a9d,Y
f929: 88           DEY
f92a: d0 f7        BNE +$f7  [$f923]
f92c: 20 90 f6     JSR $f690   ; push a drawable onto the drawing stack
f92f: 20 57 f7     JSR $f757
f932: ee 9e 6a     INC $6a9e
f935: ee 9f 6a     INC $6a9f
f938: ee a0 6a     INC $6aa0
f93b: ad af 6b     LDA $6baf
f93e: f0 12        BEQ +$12  [$f952]
f940: 8d ff 6a     STA $6aff
f943: a9 11        LDA #$11
f945: 8d fe 6a     STA $6afe
f948: a9 19        LDA #$19
f94a: 8d fc 6a     STA $6afc
f94d: a9 0e        LDA #$0e
f94f: 8d fb 6a     STA $6afb
f952: a9 00        LDA #$00
f954: 8d 00 6b     STA $6b00
f957: 8d 01 6b     STA $6b01
f95a: a9 fa        LDA #$fa
f95c: 8d a1 6a     STA $6aa1
f95f: a9 6a        LDA #$6a
f961: 8d a2 6a     STA $6aa2
f964: 20 90 f6     JSR $f690   ; push a drawable onto the drawing stack
f967: ee a0 6a     INC $6aa0
f96a: ee a0 6a     INC $6aa0
f96d: ad b0 6b     LDA $6bb0
f970: f0 12        BEQ +$12  [$f984]
f972: 8d 1f 6b     STA $6b1f
f975: a9 11        LDA #$11
f977: 8d 1e 6b     STA $6b1e
f97a: a9 1a        LDA #$1a
f97c: 8d 1c 6b     STA $6b1c
f97f: a9 0e        LDA #$0e
f981: 8d 1b 6b     STA $6b1b
f984: a9 00        LDA #$00
f986: 8d 20 6b     STA $6b20
f989: 8d 21 6b     STA $6b21
f98c: a9 1a        LDA #$1a
f98e: 8d a1 6a     STA $6aa1
f991: a9 6b        LDA #$6b
f993: 8d a2 6a     STA $6aa2
f996: 20 90 f6     JSR $f690   ; push a drawable onto the drawing stack
f999: 4c 48 f6     JMP $f648
f99c: 0a           ASL
f99d: 18           CLC
f99e: 69 51        ADC #$51
f9a0: 8d b3 68     STA $68b3
f9a3: a9 00        LDA #$00
f9a5: 69 fa        ADC #$fa
f9a7: 8d b4 68     STA $68b4
f9aa: 60           RTS
f9ab: ae 9f 6a     LDX $6a9f
f9ae: ac a0 6a     LDY $6aa0
f9b1: 20 44 f5     JSR $f544
f9b4: 86 8a        STX $8a
f9b6: 84 8b        STY $8b
f9b8: ae a1 6a     LDX $6aa1
f9bb: ac a2 6a     LDY $6aa2
f9be: 20 59 fa     JSR $fa59
f9c1: a0 00        LDY #$00
f9c3: a2 00        LDX #$00
f9c5: bd d4 6c     LDA $6cd4,X
f9c8: f0 08        BEQ +$08  [$f9d2]
f9ca: 91 8a        STA ($8a),Y
f9cc: c8           INY
f9cd: e8           INX
f9ce: e8           INX
f9cf: 4c c5 f9     JMP $f9c5
f9d2: a0 20        LDY #$20
f9d4: a2 00        LDX #$00
f9d6: bd d5 6c     LDA $6cd5,X
f9d9: f0 08        BEQ +$08  [$f9e3]
f9db: 91 8a        STA ($8a),Y
f9dd: c8           INY
f9de: e8           INX
f9df: e8           INX
f9e0: 4c d6 f9     JMP $f9d6
f9e3: 60           RTS

f9e4: 00 01 00 0b 0a 

; Battle window coordinates?
; win:TP X  Y  W  H
  text:              TP X  Y
f9e9: 00 01 01 0a 04 01 02 02   ; upper-left
f9f1: 00 0b 01 0c 04 01 0c 02   ; upper-right
f9f9: 00 01 04 0a 04 01 02 05   ; lower-left
fa01: 00 0b 04 0b 04 01 0c 05   ; lower-right
fa09: 00 01 07 18 04 01 02 08   ; bottom
fa11: 00 02 01 16 0a  ; magic/item window
fa16: 00 03 01 0c 06  ; drink window
fa1b: 00 0c 00 0d 0a  ; command window

; command menu text coordinates
;     TP X  Y  Point
fa20: 01 0e 01 39 fa
fa25: 01 0e 03 3e fa
fa2a: 01 0e 05 43 fa
fa2f: 01 0e 07 48 fa
fa34: 01 14 01 4d fa

fa39: ef f0 f1 f2 00 ; "FIGHT"
fa3e: eb ec ed ee 00 ; "MAGIC"
fa43: f3 f4 f5 f6 00 ; "DRINK"
fa48: 92 9d 8e 96 00 ; "ITEM"
fa4d: 9b 9e 97 00    ; "RUN"

fa51: 08 00 09 00 0a 00 0b 00  ; codes for outputting enemy names

fa59: a9 00        LDA #$00
fa5b: 8d 14 6d     STA $6d14
fa5e: 20 cf fc     JSR $fccf   ; Swap $90-f with $6d74-83
fa61: 86 90        STX $90
fa63: 84 91        STY $91
fa65: a0 00        LDY #$00
fa67: b1 90        LDA ($90),Y
fa69: 99 54 6d     STA $6d54,Y
fa6c: c8           INY
fa6d: c0 20        CPY #$20
fa6f: d0 f6        BNE +$f6  [$fa67]
fa71: a9 54        LDA #$54
fa73: 85 90        STA $90
fa75: a9 6d        LDA #$6d
fa77: 85 91        STA $91
fa79: a9 d4        LDA #$d4
fa7b: 85 92        STA $92
fa7d: a9 6c        LDA #$6c
fa7f: 85 93        STA $93
fa81: a2 00        LDX #$00
fa83: a1 90        LDA ($90,X)
fa85: f0 13        BEQ +$13  [$fa9a]
fa87: c9 48        CMP #$48
fa89: b0 06        BCS +$06  [$fa91]
fa8b: 20 96 fb     JSR $fb96
fa8e: 4c 94 fa     JMP $fa94
fa91: 20 a6 fa     JSR $faa6
fa94: 20 b2 fc     JSR $fcb2    ; w[$0090]++, Y=0
fa97: 4c 81 fa     JMP $fa81
fa9a: a9 00        LDA #$00
fa9c: a0 00        LDY #$00
fa9e: 91 92        STA ($92),Y
faa0: c8           INY
faa1: 91 92        STA ($92),Y
faa3: 4c cf fc     JMP $fccf   ; Swap $90-f with $6d74-83
faa6: 85 9e        STA $9e
faa8: 48           PHA
faa9: 8a           TXA
faaa: 48           PHA
faab: 98           TYA
faac: 48           PHA
faad: a5 9e        LDA $9e
faaf: c9 7a        CMP #$7a
fab1: b0 02        BCS +$02  [$fab5]
fab3: 90 04        BCC +$04  [$fab9]
fab5: a2 ff        LDX #$ff
fab7: d0 2f        BNE +$2f  [$fae8]
fab9: a2 c0        LDX #$c0
fabb: c9 57        CMP #$57
fabd: b0 04        BCS +$04  [$fac3]
fabf: 69 47        ADC #$47
fac1: d0 25        BNE +$25  [$fae8]
fac3: c9 5c        CMP #$5c
fac5: b0 04        BCS +$04  [$facb]
fac7: 69 4c        ADC #$4c
fac9: d0 1d        BNE +$1d  [$fae8]
facb: c9 6b        CMP #$6b
facd: b0 04        BCS +$04  [$fad3]
facf: 69 73        ADC #$73
fad1: d0 15        BNE +$15  [$fae8]
fad3: c9 70        CMP #$70
fad5: b0 04        BCS +$04  [$fadb]
fad7: 69 78        ADC #$78
fad9: d0 0d        BNE +$0d  [$fae8]
fadb: a2 c1        LDX #$c1
fadd: c9 75        CMP #$75
fadf: b0 04        BCS +$04  [$fae5]
fae1: 69 33        ADC #$33
fae3: d0 03        BNE +$03  [$fae8]
fae5: 18           CLC
fae6: 69 6e        ADC #$6e
fae8: 20 f1 fa     JSR $faf1
faeb: 68           PLA
faec: a8           TAY
faed: 68           PLA
faee: aa           TAX
faef: 68           PLA
faf0: 60           RTS
faf1: a0 01        LDY #$01
faf3: 91 92        STA ($92),Y
faf5: 88           DEY
faf6: 8a           TXA
faf7: 91 92        STA ($92),Y
faf9: 4c c2 fc     JMP $fcc2    ; w[$0092]+=2
fafc: a9 00        LDA #$00
fafe: 85 98        STA $98
fb00: 86 99        STX $99
fb02: a5 96        LDA $96
fb04: 38           SEC
fb05: e5 99        SBC $99
fb07: 48           PHA
fb08: 84 99        STY $99
fb0a: a5 97        LDA $97
fb0c: e5 99        SBC $99
fb0e: 30 0a        BMI +$0a  [$fb1a]
fb10: e6 98        INC $98
fb12: 85 97        STA $97
fb14: 68           PLA
fb15: 85 96        STA $96
fb17: 4c 00 fb     JMP $fb00
fb1a: 68           PLA
fb1b: a5 98        LDA $98
fb1d: 60           RTS
fb1e: 20 b2 fc     JSR $fcb2    ; w[$0090]++, Y=0
fb21: a5 90        LDA $90
fb23: 85 94        STA $94
fb25: a5 91        LDA $91
fb27: 85 95        STA $95
fb29: 20 b2 fc     JSR $fcb2    ; w[$0090]++, Y=0
fb2c: 4c 3d fb     JMP $fb3d
fb2f: 20 b2 fc     JSR $fcb2    ; w[$0090]++, Y=0
fb32: b1 90        LDA ($90),Y
fb34: 85 94        STA $94
fb36: 20 b2 fc     JSR $fcb2    ; w[$0090]++, Y=0
fb39: b1 90        LDA ($90),Y
fb3b: 85 95        STA $95
fb3d: b1 94        LDA ($94),Y
fb3f: 85 96        STA $96
fb41: c8           INY
fb42: b1 94        LDA ($94),Y
fb44: 85 97        STA $97
fb46: a2 10        LDX #$10
fb48: a0 27        LDY #$27
fb4a: 20 fc fa     JSR $fafc
fb4d: 85 9a        STA $9a
fb4f: a2 e8        LDX #$e8
fb51: a0 03        LDY #$03
fb53: 20 fc fa     JSR $fafc
fb56: 85 9b        STA $9b
fb58: a2 64        LDX #$64
fb5a: a0 00        LDY #$00
fb5c: 20 fc fa     JSR $fafc
fb5f: 85 9c        STA $9c
fb61: a2 0a        LDX #$0a
fb63: 20 fc fa     JSR $fafc
fb66: 85 9d        STA $9d
fb68: a2 00        LDX #$00
fb6a: b5 9a        LDA $9a,X
fb6c: e8           INX
fb6d: e0 05        CPX #$05
fb6f: f0 19        BEQ +$19  [$fb8a]
fb71: 09 00        ORA #$00
fb73: f0 f5        BEQ +$f5  [$fb6a]
fb75: a0 01        LDY #$01
fb77: b5 99        LDA $99,X
fb79: 09 80        ORA #$80
fb7b: 91 92        STA ($92),Y
fb7d: a9 ff        LDA #$ff
fb7f: 88           DEY
fb80: 91 92        STA ($92),Y
fb82: 20 c2 fc     JSR $fcc2    ; w[$0092]+=2
fb85: e8           INX
fb86: e0 05        CPX #$05
fb88: d0 eb        BNE +$eb  [$fb75]
fb8a: a5 96        LDA $96
fb8c: 09 80        ORA #$80
fb8e: a2 ff        LDX #$ff
fb90: 4c f1 fa     JMP $faf1
fb93: 4c 1e fb     JMP $fb1e
fb96: c9 02        CMP #$02
fb98: f0 22        BEQ +$22  [$fbbc]
fb9a: c9 03        CMP #$03
fb9c: f0 24        BEQ +$24  [$fbc2]
fb9e: c9 08        CMP #$08
fba0: 90 26        BCC +$26  [$fbc8]
fba2: c9 0c        CMP #$0c
fba4: 90 2a        BCC +$2a  [$fbd0]
fba6: f0 87        BEQ +$87  [$fb2f]
fba8: c9 0e        CMP #$0e
fbaa: f0 32        BEQ +$32  [$fbde]
fbac: c9 0f        CMP #$0f
fbae: f0 76        BEQ +$76  [$fc26]
fbb0: c9 10        CMP #$10
fbb2: d0 03        BNE +$03  [$fbb7]
fbb4: 4c 39 fc     JMP $fc39
fbb7: c9 11        CMP #$11
fbb9: f0 d8        BEQ +$d8  [$fb93]
fbbb: 60           RTS
fbbc: ad 89 6c     LDA $6c89
fbbf: 4c 4f fc     JMP $fc4f    ; Output name for player/enemy in slot A
fbc2: ad 8a 6c     LDA $6c8a
fbc5: 4c 4f fc     JMP $fc4f    ; Output name for player/enemy in slot A
fbc8: 38           SEC
fbc9: e9 04        SBC #$04
fbcb: 09 80        ORA #$80
fbcd: 4c 4f fc     JMP $fc4f    ; Output name for player/enemy in slot A
fbd0: 38           SEC
fbd1: e9 08        SBC #$08
fbd3: aa           TAX
fbd4: bd c9 6b     LDA $6bc9,X
fbd7: c9 ff        CMP #$ff
fbd9: f0 e0        BEQ +$e0  [$fbbb]
fbdb: 4c 7a fc     JMP $fc7a
fbde: a9 0a        LDA #$0a
fbe0: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
fbe3: ad 89 6c     LDA $6c89
fbe6: 30 0e        BMI +$0e  [$fbf6]
fbe8: ad 8c 6c     LDA $6c8c
fbeb: c9 42        CMP #$42
fbed: 90 07        BCC +$07  [$fbf6]
fbef: a9 b5        LDA #$b5
fbf1: a2 7c        LDX #$7c
fbf3: 4c fa fb     JMP $fbfa
fbf6: a9 b7        LDA #$b7
fbf8: a2 00        LDX #$00
fbfa: 20 00 fc     JSR $fc00
fbfd: 4c 8d fc     JMP $fc8d
fc00: 85 97        STA $97
fc02: 20 b2 fc     JSR $fcb2    ; w[$0090]++, Y=0
fc05: b1 90        LDA ($90),Y
fc07: 0a           ASL
fc08: 08           PHP
fc09: 85 96        STA $96
fc0b: 8a           TXA
fc0c: 18           CLC
fc0d: 65 96        ADC $96
fc0f: 85 96        STA $96
fc11: a9 00        LDA #$00
fc13: 65 97        ADC $97
fc15: 28           PLP
fc16: 69 00        ADC #$00
fc18: 85 97        STA $97
fc1a: a0 00        LDY #$00
fc1c: b1 96        LDA ($96),Y
fc1e: 85 94        STA $94
fc20: c8           INY
fc21: b1 96        LDA ($96),Y
fc23: 85 95        STA $95
fc25: 60           RTS
fc26: a9 0b        LDA #$0b
fc28: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
fc2b: a9 8f        LDA #$8f
fc2d: a2 4e        LDX #$4e
fc2f: 20 00 fc     JSR $fc00
fc32: a9 3f        LDA #$3f
fc34: 85 9f        STA $9f
fc36: 4c 94 fc     JMP $fc94
fc39: 20 b2 fc     JSR $fcb2    ; w[$0090]++, Y=0
fc3c: b1 90        LDA ($90),Y
fc3e: aa           TAX
fc3f: a9 ff        LDA #$ff
fc41: a0 00        LDY #$00
fc43: 91 92        STA ($92),Y
fc45: c8           INY
fc46: 91 92        STA ($92),Y
fc48: 20 c2 fc     JSR $fcc2    ; w[$0092]+=2
fc4b: ca           DEX
fc4c: d0 f3        BNE +$f3  [$fc41]
fc4e: 60           RTS

; Output name for player/enemy in slot A
fc4f: 10 1c        BPL +$1c  [$fc6d]
fc51: 29 03        AND #$03
fc53: 0a           ASL
fc54: aa           TAX
fc55: bd aa fc     LDA $fcaa,X  ; Get warrior name pointer?
fc58: 85 94        STA $94
fc5a: e8           INX
fc5b: bd aa fc     LDA $fcaa,X
fc5e: 85 95        STA $95
fc60: a0 00        LDY #$00
fc62: b1 94        LDA ($94),Y
fc64: 20 a6 fa     JSR $faa6
fc67: c8           INY
fc68: c0 04        CPY #$04
fc6a: d0 f6        BNE +$f6  [$fc62]
fc6c: 60           RTS
fc6d: 0a           ASL
fc6e: 0a           ASL
fc6f: 85 94        STA $94
fc71: 0a           ASL
fc72: 0a           ASL
fc73: 18           CLC
fc74: 65 94        ADC $94
fc76: aa           TAX
fc77: bd e4 6b     LDA $6be4,X
fc7a: 48           PHA
fc7b: a9 0b        LDA #$0b
fc7d: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
fc80: 68           PLA
fc81: 0a           ASL
fc82: aa           TAX
fc83: bd e0 94     LDA $94e0,X
fc86: 85 94        STA $94
fc88: bd e1 94     LDA $94e1,X
fc8b: 85 95        STA $95
fc8d: a9 08        LDA #$08
fc8f: 85 9f        STA $9f
fc91: 4c 94 fc     JMP $fc94

fc94: a0 00        LDY #$00
fc96: b1 94        LDA ($94),Y
fc98: f0 0a        BEQ +$0a  [$fca4]
fc9a: 20 a6 fa     JSR $faa6
fc9d: c8           INY
fc9e: c4 9f        CPY $9f
fca0: f0 02        BEQ +$02  [$fca4]
fca2: d0 f2        BNE +$f2  [$fc96]
fca4: ad b1 6b     LDA $6bb1
fca7: 4c 03 fe     JMP $fe03  ; Show Bank in A in memory locations $8000-$bfff 

; Pointers to warrior names?
fcaa: 02 61        .DW $6102
fcac: 42 61        .DW $6142
fcae: 82 61        .DW $6182
fcb0: c2 61        .DW $61c2

; w[$0090]++, Y=0
fcb2: a0 00        LDY #$00
fcb4: e6 90        INC $90
fcb6: d0 02        BNE +$02  [$fcba]
fcb8: e6 91        INC $91
fcba: 60           RTS

; w[$0094]++
fcbb: e6 94        INC $94
fcbd: d0 02        BNE +$02  [$fcc1]
fcbf: e6 95        INC $95
fcc1: 60           RTS

; w[$0092]+=2
fcc2: e6 92        INC $92
fcc4: d0 02        BNE +$02  [$fcc8]
fcc6: e6 93        INC $93
fcc8: e6 92        INC $92
fcca: d0 02        BNE +$02  [$fcce]
fccc: e6 93        INC $93
fcce: 60           RTS

; Swap $90-f with $6d74-83
fccf: 48           PHA
fcd0: 8a           TXA
fcd1: 48           PHA
fcd2: a2 0f        LDX #$0f
fcd4: b5 90        LDA $90,X
fcd6: 48           PHA
fcd7: bd 74 6d     LDA $6d74,X
fcda: 95 90        STA $90,X
fcdc: 68           PLA
fcdd: 9d 74 6d     STA $6d74,X
fce0: ca           DEX
fce1: 10 f1        BPL +$f1  [$fcd4]
fce3: 68           PLA
fce4: aa           TAX
fce5: 68           PLA
fce6: 60           RTS

; Battle PRNG
fce7: ae 8a 68     LDX $688a
fcea: ee 8a 68     INC $688a
fced: bd f1 fc     LDA $fcf1,X
fcf0: 60           RTS

; PRNG table #1
fcf1: ae d0 38 8a ed 60 db 72 5c 59 27 d8 0a 4a f4 34
fd01: 08 a9 c3 96 56 3b f1 55 f8 6b 31 ef 6d 28 ac 41
fd11: 68 1e 2a c1 e5 8f 50 f5 3e 7b b7 4c 14 39 12 cd
fd21: b2 62 8b 82 3c ba 63 85 3a 17 b8 2e b5 be 20 cb
fd31: 46 51 2c cf 03 78 53 97 06 69 eb 77 86 e6 ea 74
fd41: 0c 21 e2 40 d4 5a 3d c7 2b 94 d5 8c 44 fd ee d2
fd51: 43 00 bb fa c6 1d 98 a0 d3 54 5f 5e dc a8 00 af
fd61: 93 a1 e1 6c 04 de b6 d7 36 16 c5 c8 c4 e4 0f 02
fd71: ab e8 33 99 73 11 6a 09 67 f3 ff a2 df 32 0e 1f
fd81: 0d 90 25 64 75 b3 65 2f c9 b0 da 5d 9f ec 29 ce
fd91: e3 f0 91 7a 58 45 24 1c 47 a4 89 18 2d cc bd 6f
fda1: 80 f6 81 22 e9 07 70 fb dd ad 35 a6 61 b4 a3 fe
fdb1: b1 30 4b 15 48 6e 4f 5b 13 9c 83 92 01 c2 19 7f
fdc1: 1a 1b 71 b9 3f 4e 9b bf 9e 87 0b 10 57 f2 26 79
fdd1: 9a 05 c0 e0 f7 4d 7d ca 52 9d f9 bc aa fc 8d 7e
fde1: d1 a5 42 e7 d6 76 a7 84 8e 66 7c 23 88 37 49 d9

fdf1:    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 

fe00: 4c a8 fe     JMP $fea8  ; Wait for V-Blank
fe03: 4c 1a fe     JMP $fe1a  ; Write MMC1 Register 3

; Write MMC1 Register 0
fe06: 8d ff 9f     STA $9fff
fe09: 4a           LSR
fe0a: 8d ff 9f     STA $9fff
fe0d: 4a           LSR
fe0e: 8d ff 9f     STA $9fff
fe11: 4a           LSR
fe12: 8d ff 9f     STA $9fff
fe15: 4a           LSR
fe16: 8d ff 9f     STA $9fff
fe19: 60           RTS

; Write MMC1 Register 3
fe1a: 8d f9 ff     STA $fff9
fe1d: 4a           LSR
fe1e: 8d f9 ff     STA $fff9
fe21: 4a           LSR
fe22: 8d f9 ff     STA $fff9
fe25: 4a           LSR
fe26: 8d f9 ff     STA $fff9
fe29: 4a           LSR
fe2a: 8d f9 ff     STA $fff9
fe2d: 60           RTS

; Reset handler - game starts here
fe2e: 78           SEI        ; No IRQs
fe2f: a9 00        LDA #$00   ; Disable NMIs too
fe31: 8d 00 20     STA $2000
fe34: 85 ff        STA $ff
fe36: 85 fe        STA $fe
fe38: a9 06        LDA #$06   ; PPU off
fe3a: 8d 01 20     STA $2001
fe3d: d8           CLD        ; useless?
fe3e: a2 02        LDX #$02   ; Wait for 2 V-Blanks (let the NES warm up?)
fe40: 2c 02 20     BIT $2002
fe43: 10 fb        BPL +$fb  [$fe40]
fe45: ca           DEX
fe46: d0 f8        BNE +$f8  [$fe40]
fe48: a9 80        LDA #$80   ; Reset MMC1
fe4a: 8d ff 9f     STA $9fff
fe4d: 8d ff bf     STA $bfff
fe50: 8d ff df     STA $dfff
fe53: 8d f9 ff     STA $fff9
fe56: a9 0e        LDA #$0e   ; Vertical mirroring, swap $8000-$bfff, 4K PRG banks, 8K CHR bank
fe58: 20 06 fe     JSR $fe06  ; Write MMC1 Register 0
fe5b: 8d ff bf     STA $bfff  ; set CHR bank 0? (MMC1 Register 1)
fe5e: 8d ff bf     STA $bfff
fe61: 8d ff bf     STA $bfff
fe64: 8d ff bf     STA $bfff
fe67: 8d ff bf     STA $bfff
fe6a: 8d ff df     STA $dfff  ; Do nothing in 8K CHR bank mode (MMC1 Register 2)
fe6d: 8d ff df     STA $dfff
fe70: 8d ff df     STA $dfff
fe73: 8d ff df     STA $dfff
fe76: 8d ff df     STA $dfff
fe79: a9 06        LDA #$06   ; Show bank 6
fe7b: 20 1a fe     JSR $fe1a  ; Write MMC1 Register 3
fe7e: 8d 16 40     STA $4016  ; Clear joypad strobe
fe81: 8d 15 40     STA $4015  ; Sound off
fe84: 8d 10 40     STA $4010  ; useless? DMC playback frequency
fe87: a9 c0        LDA #$c0   ; "set alternative pAPU frame counter method and reset the frame counter"
fe89: 8d 17 40     STA $4017
fe8c: ca           DEX        ; Reset the stack to $ff
fe8d: 9a           TXS
fe8e: 8e 00 01     STX $0100  ; Sentinel value on the stack? Who knows.
fe91: 20 be fe     JSR $febe  ; Clear all BG palettes
fe94: a9 06        LDA #$06   ; Show bank 6 again
fe96: 20 1a fe     JSR $fe1a  ; Write MMC1 Register 3
fe99: 4c 00 c0     JMP $c000  ; Start the game!!!

; NMI handler - should only get here from the "Wait for V-Blank" loop
fe9c: a5 ff        LDA $ff    ; Reset flags (will clear NMIs)
fe9e: 8d 00 20     STA $2000
fea1: ad 02 20     LDA $2002  ; Clear NMI flag
fea4: 68           PLA        ; Return two levels up the stack (to the caller of "Wait for V-Blank")
fea5: 68           PLA
fea6: 68           PLA
fea7: 60           RTS

; Wait for V-Blank
fea8: ad 02 20     LDA $2002  ; Already in V-Blank?
feab: 10 07        BPL +$07  [$feb4]
fead: a9 00        LDA #$00   ; Yes: Do a busy loop to get out of V-Blank.
feaf: 38           SEC
feb0: e9 01        SBC #$01
feb2: d0 fb        BNE +$fb  [$feaf]
feb4: a5 ff        LDA $ff    ; Enable NMI, then loop forever.
feb6: 09 80        ORA #$80   ; (The NMI handler will rescue us)
feb8: 8d 00 20     STA $2000

; IRQ handler: lock up the game.
febb: 4c bb fe     JMP $febb

; Clear all BG palettes
febe: a9 00        LDA #$00
fec0: 8d 01 20     STA $2001
fec3: ad 02 20     LDA $2002
fec6: a9 3f        LDA #$3f
fec8: 8d 06 20     STA $2006
fecb: a9 00        LDA #$00
fecd: 8d 06 20     STA $2006
fed0: a2 10        LDX #$10
fed2: a9 0f        LDA #$0f
fed4: 8d 07 20     STA $2007
fed7: ca           DEX
fed8: d0 fa        BNE +$fa  [$fed4]
feda: a9 3f        LDA #$3f
fedc: 8d 06 20     STA $2006
fedf: a9 00        LDA #$00
fee1: 8d 06 20     STA $2006
fee4: 8d 06 20     STA $2006
fee7: 8d 06 20     STA $2006
feea: 60           RTS

feeb: 01 01        ORA ($01,X)
feed: 01 01        ORA ($01,X)
feef: 01 01        ORA ($01,X)
fef1: 01 01        ORA ($01,X)
fef3: 01 01        ORA ($01,X)
fef5: 01 01        ORA ($01,X)
fef7: 01 01        ORA ($01,X)
fef9: 01 01        ORA ($01,X)
fefb: 01 01        ORA ($01,X)
fefd: 01 01        ORA ($01,X)
feff: 01 01        ORA ($01,X)
ff01: 01           .DB 01

; Set priority of sprites, depending on Y pos (low if Y<$1b)
ff02: a2 10        LDX #$10
ff04: bd 00 02     LDA $0200,X
ff07: c5 1b        CMP $1b
ff09: bd 02 02     LDA $0202,X
ff0c: b0 04        BCS +$04  [$ff12]
ff0e: 09 20        ORA #$20
ff10: d0 02        BNE +$02  [$ff14]
ff12: 29 df        AND #$df
ff14: 9d 02 02     STA $0202,X
ff17: e8           INX
ff18: e8           INX
ff19: e8           INX
ff1a: e8           INX
ff1b: d0 e7        BNE +$e7  [$ff04]
ff1d: 4c 00 fe     JMP $fe00   ; wait for V-blank

ff20: a0 00        LDY #$00
ff22: a2 07        LDX #$07
ff24: bd d0 03     LDA $03d0,X
ff27: c9 0f        CMP #$0f
ff29: f0 0b        BEQ +$0b  [$ff36]
ff2b: 38           SEC
ff2c: e9 10        SBC #$10
ff2e: 10 02        BPL +$02  [$ff32]
ff30: a9 0f        LDA #$0f
ff32: 9d d0 03     STA $03d0,X
ff35: c8           INY
ff36: ca           DEX
ff37: d0 eb        BNE +$eb  [$ff24]
ff39: c0 01        CPY #$01
ff3b: 60           RTS

ff3c: 00           BRK
ff3d: 00           BRK
ff3e: 00           BRK
ff3f: 00           BRK

ff40: a0 00        LDY #$00
ff42: a2 07        LDX #$07
ff44: bd d0 03     LDA $03d0,X
ff47: dd f0 03     CMP $03f0,X
ff4a: f0 12        BEQ +$12  [$ff5e]
ff4c: c9 0f        CMP #$0f
ff4e: d0 07        BNE +$07  [$ff57]
ff50: bd f0 03     LDA $03f0,X
ff53: 29 0f        AND #$0f
ff55: 10 03        BPL +$03  [$ff5a]
ff57: 18           CLC
ff58: 69 10        ADC #$10
ff5a: 9d d0 03     STA $03d0,X
ff5d: c8           INY
ff5e: ca           DEX
ff5f: d0 e3        BNE +$e3  [$ff44]
ff61: c0 01        CPY #$01
ff63: 60           RTS
ff64: a2 07        LDX #$07
ff66: bd d0 03     LDA $03d0,X
ff69: 9d f0 03     STA $03f0,X
ff6c: ca           DEX
ff6d: d0 f7        BNE +$f7  [$ff66]
ff6f: 60           RTS
ff70: 20 00 fe     JSR $fe00   ; wait for V-blank
ff73: 20 0f c0     JSR $c00f   ; Upload palettes: BG at $03c0, sprite at $03d0
ff76: a9 00        LDA #$00
ff78: 8d 05 20     STA $2005
ff7b: 8d 05 20     STA $2005
ff7e: 4c 09 c0     JMP $c009   ; Start music or play current notes

ff81: ff           .DB $FF
ff82: ff           .DB $FF
ff83: ff           .DB $FF
ff84: ff           .DB $FF
ff85: ff           .DB $FF
ff86: ff           .DB $FF
ff87: ff           .DB $FF
ff88: ff           .DB $FF
ff89: ff           .DB $FF
ff8a: ff           .DB $FF
ff8b: ff           .DB $FF
ff8c: ff           .DB $FF
ff8d: ff           .DB $FF
ff8e: ff           .DB $FF
ff8f: ff           .DB $FF

ff90: 20 64 ff     JSR $ff64
ff93: 20 70 ff     JSR $ff70
ff96: e6 f0        INC $f0
ff98: a5 f0        LDA $f0
ff9a: 29 07        AND #$07
ff9c: d0 f5        BNE +$f5  [$ff93]
ff9e: 20 20 ff     JSR $ff20
ffa1: b0 f0        BCS +$f0  [$ff93]
ffa3: 60           RTS

ffa4: 00           BRK
ffa5: 00           BRK
ffa6: 00           BRK
ffa7: 00           BRK

ffa8: 20 70 ff     JSR $ff70
ffab: e6 f0        INC $f0
ffad: a5 f0        LDA $f0
ffaf: 29 07        AND #$07
ffb1: d0 f5        BNE +$f5  [$ffa8]
ffb3: 20 40 ff     JSR $ff40
ffb6: b0 f0        BCS +$f0  [$ffa8]
ffb8: 60           RTS

ffb9: 00           BRK
ffba: 00           BRK
ffbb: 00           BRK
ffbc: 00           BRK
ffbd: 00           BRK
ffbe: 00           BRK
ffbf: 00           BRK

; Decompress 2 world map rows at Y=$41 into RAM at $0600-$07ff
ffc0: a9 01        LDA #$01
ffc2: 20 03 fe     JSR $fe03  ; Show Bank in A in memory locations $8000-$bfff 
ffc5: 20 40 bf     JSR $bf40
ffc8: a9 09        LDA #$09
ffca: 4c 03 fe     JMP $fe03  ; Show Bank in A in memory locations $8000-$bfff 

ffcd: ff ed ff ff  .DB $ff, $ed, $ff, $ff
ffd1: ff ff ff ff  .DB $ff, $ff, $ff, $ff
ffd5: ff ff ff ff  .DB $ff, $ff, $ff, $ff
ffd9: ff ff ff ff  .DB $ff, $ff, $ff, $ff
ffdd: ff 1e ff 00  .DB $ff, $1e, $ff, $00
ffe1: 00 00        .DB $00, $00

; ROM name
ffe3: 46 49 4e 41  .DB $46, $49, $4e, $41  ; FINA
ffe7: 4c 20 46 41  .DB $4c, $20, $46, $41  ; L FA
ffeb: 4e 54 41 53  .DB $4e, $54, $41, $53  ; NTAS
ffef: 59           .DB $59                 ; Y

fff0: 43 70 00 00  .DB $43, $70, $00, $00
fff4: 48 04 01 0c  .DB $48, $04, $01, $0c
fff8: c3 ff        .DB $c3, $ff

; Hardware vectors
fffa: 9c fe        .DW $fe9c  ; NMI
fffc: 2e fe        .DW $fe2e  ; Reset
fffe: bb fe        .DW $febb  ; IRQ/BRK
